xyz*_*yzt 5 c++ multibyte wofstream
我有多字节字符串的问题.我简化了我的问题如下:
std::wstring str = L"mult?byte test string";
std::wofstream f;
f.open("F:\\dump.txt");
f << str;
f.close();
Run Code Online (Sandbox Code Playgroud)
并且转储文件的内容是:"mult"
为什么它会削减str的剩余部分,而我已经使用了wstring和wofstream?
谢谢
wofstream使用当前区域设置写出数据。默认区域设置可能不支持多字节字符。
请参阅问题:无法将 std::wstring 写入 wofstream
您可以通过以下方式让它输出完整的字符串:
std::locale::global(std::locale(""));
Run Code Online (Sandbox Code Playgroud)
在编写之前,您不会在 Windows 上获得 unicode 字符,因为它本身不支持 UTF-8 语言环境。
为此,您应该使用 将其转换为 std::string WideCharToMultiByte,并使用常规 将其写出ofstream。