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

标签 c++ multibyte wofstream

我对多字节 char 字符串有疑问。我已将我的问题简化如下:

std::wstring str = L"multıbyte test string";
std::wofstream f;
f.open("F:\\dump.txt");
f << str;
f.close();

转储文件的内容是:“mult”

虽然我已经使用了 wstring 和 wofstream,但为什么它会削减 str 的剩余部分?

谢谢

最佳答案

wofstream 使用当前语言环境写出数据。默认语言环境可能不支持多字节字符。

参见问题:Unable to write a std::wstring into wofstream

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

std::locale::global(std::locale(""));

在编写之前,但是你不会在 Windows 上将字符作为 unicode,因为它本身不支持 UTF-8 语言环境。

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

关于c++ - 在 C++ 中输出多字节字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951188/

相关文章:

c++ - 如何使用 C++ 在 Windows 上写入和读取 UTF 16 文件

c++ - CStdioFile 未声明的标识符

c++ - SWIG 包装的 vector vector (C++ 到 python)——如何将内部 vector 识别为代理对象?

c++ - 可变参数模板中的总和类型

php - 如何将带有细空格的数字格式化为千位分隔符?

php - 检查 PHP 中是否为多字节字符串

c++ - 查找给定年、月和 "nth"日在 C/C++ 月中出现的日期

c++ - Windows 找不到 win_bison.exe

c++ - 我可以使用 memcmp 两个比较多字节字符串吗?

c++ - 为什么 C++ 中的宽文件流默认会缩小写入数据的范围?