首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ std::wofstream unicode问题。

C++ std::wofstream unicode问题。
EN

Stack Overflow用户
提问于 2015-09-12 14:17:54
回答 2查看 688关注 0票数 1

我使用VS 2012编写了这段代码:

代码语言:javascript
复制
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符号,比如“--”它会起作用的,它们都会被清晰地显示出来。我试图改变全球地区,但我没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-12 15:33:31

这就是为什么我们只使用字符串文本中的ASCII。

您的代码很好,但是字符串文本显然不包含您认为它们所做的事情。这可能是由于配置错误或功能不足的文本编辑器造成的。

用转义序列代替(\uXXXX),这样你就知道你得到了什么。在2015年,由ASCII字符组成的源代码不会真的出错。

票数 0
EN

Stack Overflow用户

发布于 2015-09-12 16:33:11

哦,这真是太有趣了。

代码语言:javascript
复制
wchar_t *s1 = L"\u2502"; // "│"
wchar_t *s2 = L"\u2500"; // "─"
wchar_t *s3 = L"\u253C"; // "┼"
logout << s1<<s2<<s3<<endl;

现在,在我的.txt文件中,我看到了unicode编号。但是我可以使用相同的结构而不用(\uXXXX)

代码语言:javascript
复制
logout << L" │ ─ ┼"<<endl;

这个也能用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32539835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档