std::wstring binarnie - czyli jak zapisać i wczytać
Ostatnio zmodyfikowano dzisiaj: 3h » 10 min
tBane Temat założony przez niniejszego użytkownika |
std::wstring binarnie - czyli jak zapisać i wczytać » 2025-11-18 16:55:05 Jak zapisać i wczytać binarnie std::wstring w pliku? class Saver { public: std::ostream & file; Saver( std::ostream & file ) : file( file ) { } void save_string( const std::string & str ) { uint16_t str_len = static_cast < uint16_t >( str.size() ); file.write( reinterpret_cast < const char * >( & str_len ), sizeof( str_len ) ); file.write( str.data(), str_len ); } void save_wstring( const std::wstring & wstr ) { uint16_t wstr_len = static_cast < uint16_t >( wstr.size() ); file.write( reinterpret_cast < const char * >( & wstr_len ), sizeof( wstr_len ) ); file.write( reinterpret_cast < const char * >( wstr.data() ), wstr_len * sizeof( wchar_t ) ); } };
class Reader { std::istream & is; public: Reader( std::istream & is ) : is( is ) { } std::string read_string() { uint16_t len; is.read( reinterpret_cast < char * >( & len ), sizeof( uint16_t ) ); std::string str( len, '\0' ); is.read( & str[ 0 ], len ); return str; } std::wstring read_wstring() { uint16_t len; is.read( reinterpret_cast < char * >( & len ), sizeof( uint16_t ) ); std::wstring wstr( len, L'\0' ); is.read( reinterpret_cast < char * >( & wstr[ 0 ] ), len * sizeof( wchar_t ) ); return wstr; } };
|
|
pekfos |
» 2025-11-18 16:59:15 A jaki jest problem? |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-11-18 17:00:37 Wczytuje mi niepoprawnie std::wstring (tylko jeden znak '|') stąd wiem, że co najmniej jedna z tych funkcji jest błędna. |
|
pekfos |
» 2025-11-18 17:02:28 A nie użyłeś czasem read_string zamiast read_wstring? |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-11-18 17:08:42 Ok jednak działa... W innej funkcji była odwrotna kolejność działań. Przepisałem kod na pojedyncze kroki i zaczęło działać :D Dzięki za pomoc kod jest rzeczywiście dobry :D |
|
| « 1 » |