我从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žimeco jezapnutý。\”)。如何将此行正确写入文件?
最佳答案
尝试将其作为代码的第一行:
int main()
{
std::cout.imbue(std::locale(""));
这会将应用程序的本地设置为计算机支持的内容(对于宽字符串,可能是UTF-32)。不幸的是,对于程序员来说,默认本地是“C”,而“C”本地的codecvt方面没有任何用处(可能将宽宪章截断为单个字节而不进行转换)。