Krise mit wofstream
-
Seit Tagen zerbreche ich mir den Kopf, wie ich binär in einen wofstream schreiben könnte. Es geht nicht! Ich kann ohne weiteres mit write wide characters in das file schreiben, kein Problem. Ich kann aber auf keinen Fall binäre Daten in einen wofstream schreiben. Mit einem ofstream gehts, ich möchte jedoch nicht meine wide characters erst in characters wandeln, um diese hernach wieder von characters nach wide characters zu wandeln...
Ich würde gerne meine Objekte in einen wofstream serialisieren, nebst den wide characters hab ich da noch ein paar Zahlenwerte, die binär in die Datei sollen. Daher möchte ich einen wofstream verwenden, nicht einen ofstream...Funktioniert:
ofstream testof( "narrow_test.dat", ios::out ); testof.write( "Blah", sizeof( "Blah" ) / sizeof( char ) ); const double blah = 2341415; const char ln( '\n' ); testof.write( &ln, 1 ); testof.write( reinterpret_cast<const char*>( &blah ), sizeof( blah ) / sizeof( char ) ); testof.write( &ln, 1 ); testof.close();Funktioniert nicht:
wofstream testof( "wide_test.dat", ios::out ); testof.write( L"Blah", sizeof( L"Blah" ) / sizeof( wchar_t ) ); const double blah = 2341415; const wchar_t ln( '\n' ); testof.write( &ln, 1 ); testof.write( reinterpret_cast<const wchar_t*>( &blah ), sizeof( blah ) / sizeof( wchar_t ) ); testof.write( &ln, 1 ); testof.close();Kann mir jemand auf die Sprünge helfen? Weshalb ist sowas mit wofstreams nicht möglich?... Was mache ich da falsch?
Vielen Dank für jeglichen Hinweis!
-
Immer wieder derselbe Fehler:
sizeof("xyz") bzw. sizeof(L"xyz") liefert dir nur die Größe eines Zeigers, nicht die Länge der Zeichenkette.Mit sizeof("Blah") hast du einfach Glück gehabt, da auf 32Bit-Systemen ein Zeiger 4 Bytes groß ist (und ein char 1 Byte benötigt).
-
Argh ich Depp! Vielen Dank!