我使用VS 2012编写了这段代码:
std::wofstream logout("my_log.txt", std::ios_base::out | std::ios_base::trunc);
std::locale utf8_locale(locale(), new codecvt_utf8<wchar_t>);
logout.imbue(utf8_locale);
if (!logout.is_open())
{
printf("Cannot open file.\n");
return 1;
}
else printf("Log file created.\n");
logout << "Client IP │"<< "Recv time │"<< "Request │"<< "Response "<<endl;
logout << "─────────────────────┼"<< "─────────────────────────┼"<<endl;在my_log.txt文件中,所有unicode符号都被替换为“?”。我想要创建类似于日志文件表的东西。如果我使用standart ASCII符号,比如“--”它会起作用的,它们都会被清晰地显示出来。我试图改变全球地区,但我没有成功。
发布于 2015-09-12 15:33:31
这就是为什么我们只使用字符串文本中的ASCII。
您的代码很好,但是字符串文本显然不包含您认为它们所做的事情。这可能是由于配置错误或功能不足的文本编辑器造成的。
用转义序列代替(\uXXXX),这样你就知道你得到了什么。在2015年,由ASCII字符组成的源代码不会真的出错。
发布于 2015-09-12 16:33:11
哦,这真是太有趣了。
wchar_t *s1 = L"\u2502"; // "│"
wchar_t *s2 = L"\u2500"; // "─"
wchar_t *s3 = L"\u253C"; // "┼"
logout << s1<<s2<<s3<<endl;现在,在我的.txt文件中,我看到了unicode编号。但是我可以使用相同的结构而不用(\uXXXX)
logout << L" │ ─ ┼"<<endl;这个也能用。
https://stackoverflow.com/questions/32539835
复制相似问题