Also, noch mal von ganz vorne
Ich öffne mit einem wfstream eine Unicode-Datei und lese die BOM aus. Funktioniert alles. Im Hexeditor sehe ich zuerst 2 bytes für die BOM und dannjeweils zwei bytes für die zeichen, welche also schön in ein wchar_t passen würden. Sagen wir mal es steht der text 'Baum' drin, dann würde es byteweise so aussehen:
|
Quellcode
|
1
|
'B', '\0', 'a', '\0', 'u, '\0', 'm', '\0',
|
So nun lese ich mit wfstream::get zeichen für zeichen ein:
(geöffnet im textmodus)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
wchar_t c1 = file.get();
wchar_t c2 = file.get();
wchar_t c3 = file.get();
wchar_t c4 = file.get();
wchar_t c5 = file.get();
...
|
c1 enthält danach 'B', c2 '\0', c3 'a', c4 '\0', c5 'u', usw.
Also holt sich get nur jeweils ein byte/char anstatt, wie man es sich denken könnte, einen wchar_t. Dementsprechend wird auch der Dateizeiger nur um ein byte weitergerückt.
Ich kann da natürlich ein Workaround basteln, aber warum macht get das bloß?