fstream: Schreiben in Datei schlägt fehl
-
Hi
Wenn ich versuch eine strcut in eine Datei zu schreiben, schlägt die Methode immer fehl. Hier mal mein Code:struct FHEADER { byte namelen; byte authorlen; unsigned short NumGroundTiles; unsigned short NumObjects; }; std::wfstream f(L"test.txt", std::ios::out | std::ios::binary); std::wstring name(L"Testname"); std::wstring author(L"Testauthor"); MHEADER mh = {static_cast<byte>(name.size()), static_cast<byte>(author.size()), 1, 2}; if(!f) return -1; f.write(reinterpret_cast<const wchar_t *>(&mh), sizeof(MHEADER)); if(!f.good()) std::wcout << L"Error\n"; f.close();Woran liegt das? Es muss doch mit structs genau so wie mit ints usw. gehen.
MfG 001
-
Wieso heißt es oben FHEADER und unten MHEADER?
-
ups.. das ist nur ein Tippfehler aber es geht auch mit dem korrekten namen nicht.
-
001 schrieb:
f.write(reinterpret_cast<const wchar_t *>(&mh), sizeof(MHEADER));write(...) erwartet ein char* und nicht ein wchar_t*. Kann sein das das Problem da liegt.
[cpp]f.write(reinterpret_cast<char*>(&mh), sizeof(MHEADER));[/cpp]
-
ich benutze std::wfstream. Genauer gesagt std::basics_festream<wchar_t, std::char_traits<wchar_t>> und deshalb will die write() methode auch ein wchar_t
-
lol ich hab mal einfach anstatt wfstream fstream genommen und es scheint zu funktionieren. Aber warum geht das mit wfstream nicht?
-
001 schrieb:
ich benutze std::wfstream. Genauer gesagt std::basics_festream<wchar_t, std::char_traits<wchar_t>> und deshalb will die write() methode auch ein wchar_t
Achja, sry übersehen ...
-
001 schrieb:
lol ich hab mal einfach anstatt wfstream fstream genommen und es scheint zu funktionieren. Aber warum geht das mit wfstream nicht?
Möglicherweise weil wfstream::write() die Größenangabe nicht in Bytes, sondern in wchar_t's erwartet. (nur eine Idee)