在C++中输出多字节字符串

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?

谢谢

yid*_*ing 1

wofstream使用当前区域设置写出数据。默认区域设置可能不支持多字节字符。

请参阅问题:无法将 std::wstring 写入 wofstream

您可以通过以下方式让它输出完整的字符串:

std::locale::global(std::locale(""));
Run Code Online (Sandbox Code Playgroud)

在编写之前,您不会在 Windows 上获得 unicode 字符,因为它本身不支持 UTF-8 语言环境。

为此,您应该使用 将其转换为 std::string WideCharToMultiByte,并使用常规 将其写出ofstream