c++ - 如何将包含不同语言的 wstring 行写入文件?

标签 c++ c string character-encoding wofstream

我从 22 个不同语言的文件中分离出部分,并将它们做成 wstring 行,例如:

wstring wstr_line = L"\"IDS_TOAST_ECOON\",\"eco Mode is turned On.\",\"ecoモードをオンにしました。\",\"Režim eco je zapnutý.\",\"Økoindstillingen er aktiveret\"..."

我使用 wofstream 将 wstr_line 放入文件中,但该行在日文部分结束(\"ecoモードをオンにしました。\")。 如果我设置 wfout.imbue("chs"); 在捷克部分完成的行(\"Režim eco je zapnutý.\")

如何将这一行正确写入文件?

最佳答案

尝试将此作为代码的第一行:

int main()
{
    std::cout.imbue(std::locale(""));

这会将应用程序的本地设置为机器支持的内容(对于宽字符串可能是 UTF-32)。不幸的是,对于程序员来说,默认的本地是“C”,而“C”本地的 codecvt 方面没有做任何有用的事情(可能会在不转换的情况下将宽包截断为单个字节)。

关于c++ - 如何将包含不同语言的 wstring 行写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715441/

相关文章:

c++ - 返回从缓冲区和函数读取的字符串而没有动态分配?

c - 在文本文件中的 NULL 字符中搜索字符串中的子字符串

string - 如何将所有从 'foobar' 开始的行移动到文件末尾?

c++ - 子类的虚函数调用父函数一次

c++ - 没有中间表达式的三元运算符

c++ - OpenGL创建后纹理上的形状抗锯齿

c - cerf、cerfc、ctgamma 和 clgamma 函数的状态?

c - do-while 循环中的 scanf() 即使对输入进行测试也会导致无限循环

c++ - 如何修复QNX的浮点精度?

c - 在哪里定义 C 中的数据契约