2009-03-03 18 views
1

Ich habe Probleme beim Öffnen einer Unicode-Datei in C++ mit fstreams anstelle der älteren FILE-basierten Dateihandhabungsfunktionen. Beim Öffnen einer Datei mit _wfopen kann ich einen Modus angeben, der angibt, welche Zeichencodierung verwendet werden soll. ZB:wifstream entspricht dem "mode" -Parameter von _wfopen?

_wfopen_s(&file, fileName, unicode ? L"r+, ccs=UTF-16LE" : L"r+"); 

Das funktioniert gut. Bei der Verwendung von wifstream erhalte ich jedoch die Byte-Reihenfolge-Markierung am Anfang der Datei, und der Rest der Datei erscheint im Speicher mit 0x00 interlaced. Es ist klar, dass nur jedes Zeichen als Byte eingelesen wird.

Meine Frage ist: gibt es eine Entsprechung zu dem 'Modus' Parameter oben für die Verwendung mit fstreams? Es ist nicht schlimm, wenn nicht, ich bevorzuge nur die Syntax von Streams über FILEs.

Danke!

Antwort

3

Sie könnten versuchen, eine Conversion-Facette für den Stream zu verwenden. Überprüfen Sie die Dateien codecvt.h und codecvt.cpp als ein Beispiel.

Verwandte Themen