2011-01-17 7 views
1

Ich habe eine Datei, die eine sehr lange Unicode-Zeichenfolge enthält. Ich möchte die gesamte Unicode-Zeichenfolge aus der Datei in Zeichenfolge (oder CString) lesen. Wie kann ich das tun? DankMFC lesen Unicode-String aus Datei in String

+0

möglich Duplikat [Lesen Sie Unicode-String aus einer Datei zu CComBSTR] (http://stackoverflow.com/questions/4710442/read-unicode-string-from-file-to-ccombstr) – MSalters

Antwort

0
ifstream file("filename.txt"); 
char data[1024]; 
file.read(data, 1024); 
CString str(data); 
1

Verwenden MFC CFile die Datei Aufruf CFile zu öffnen :: GetStatus Dateigröße http://msdn.microsoft.com/en-us/library/fa0hc0ht%28VS.80%29.aspx zuteilen ein Byte-Array der erworbenen Dateigröße zu erwerben und CFile verwenden :: Lesen Sie es bekommen http://msdn.microsoft.com/en-us/library/hwbccf8z%28v=VS.80%29.aspx

Jetzt gibt es ein BOM-Problem, um das Sie kümmern müssen. Überprüfen Sie, ob die BOM-Zeichen am Anfang Ihres Puffers vorhanden sind. Da Sie nicht angegeben haben, welches Unicode-Format Ihre Datei ist, müssen Sie sich an http://en.wikipedia.org/wiki/Byte_order_mark wenden, um herauszufinden, was sie sind. Entfernen Sie Stücklistenzeichen, bevor Sie fortfahren.

Jetzt können Sie versuchen, den Raw-Puffer in CString-Konstruktor zu werfen. Die meiste Zeit funktioniert das.

0
CString lv_szResult; 

CStdioFile lv_InputFile(c_szFile, CFile::modeRead | CFile::typeUnicode); 
CString lv_szLine ; 
while(lv_InputFile.ReadString(lv_szLine) == TRUE) 
{ 
    lv_szResult += lv_szLine + "\n" ; 
}