作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这对我来说似乎很难。我有将 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/
我是一名优秀的程序员,十分优秀!