gpt4 book ai didi

c++ - 如何将 Unicode CString(日文)打印到文本文件?

转载 作者:行者123 更新时间:2023-11-30 03:00:21 34 4
gpt4 key购买 nike

这对我来说似乎很难。我有将 CString 打印到文本文件的代码,但该值恰好是 Unicode(日语)。一旦命中此行,它下面的任何内容都不会被打印。

知道如何在文本文件中打印日语文本吗?

#define OFSTREAM std::wofstream

OFSTREAM *outfile;
outfile = new OFSTREAM;
outfile->open (filename, ios::out);

CString varName = _T(" ");
/*stuff*/
*outfile << _T(" Name: ") << (LPCTSTR)varName << _T("\n");

最佳答案

流停止工作的原因是因为设置了失败位。您没有处理错误,因此流停止工作。发生错误时需要清除失败位。

必须设置 wostream 对象的语言环境,以便 codecvt facet 处理将日语宽字符转换为字节。默认情况下使用“C”语言环境,在 VS 中只支持 ASCII 字符。如果您只需要编写文件以在日文版 Windows 上工作,您可以执行以下操作:

std::wofstream outfile(filename, ios::out);
outfile.imbue(std::locale("")); // use the system locale

CString varName = _T(" ");
/*stuff*/
outfile << L" Name: " << (LPCTSTR)varName << L"\n";

或者您可以在 Windows 上指定日语语言环境:

outfile.imbue(std::locale("Japanese")); // use the japanese locale on any Windows system

这两种方法都使用传统的日语语言环境编码,应该避免使用。您可以改为使用 UTF-8:

// replace just the codecvt facet of the stream's current locale
outfile.imbue(std::locale(outfile.getloc(), new std::codecvt_utf8_utf16<wchar_t>()));

关于c++ - 如何将 Unicode CString(日文)打印到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207462/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com