| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 698 人关注过本帖
标题:求助:wcout无输出
只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:1 
求助:wcout无输出
cout输出正常,同样的程序换成wcout无输出。
DEBUG添加断点,观察wstring字符串正确,就是wcout无输出。
记得好像以前遇到过这个问题。
查找以前发的帖子,找到了解决方法。
添加一句std::wcout.imbue( std::locale(std::locale(),"",std::locale::ctype) );
wcout就可以正常输出了。。。。
但也只能是照猫画虎,不知其意。。。。

求教:std::wcout.imbue( std::locale(std::locale(),"",std::locale::ctype) ); 是什么意思。。。。


图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


搜索更多相关主题的帖子: 帖子 输出 std 方法 添加 
2022-12-09 14:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
不知道的话,也没关系,反正也几乎碰不到它(gcc就只同意设置global locale)

首先是 locale 的概念,这个概念比较失败,所以很少人谈论它,略。
std::locale() 它获得当前使用的global locale,而默认当然是从C语言继承过来的"C"。(C语言的setlocale函数就有两个特殊参数,"C" 和 "",其中""表示系统本身的本地环境)
std::locale(std::locale(),"",std::locale::ctype) 是创建一个locale实例,这个实例从std::locale() --- 也就是 global locale --- 继承而来,除了 std::locale::ctype(字符分类特征) 来自于名为""的locale --- 也就是系统本身的本地环境
简而言之,std::locale(std::locale(),"",std::locale::ctype) 就是创建了一个「其它不变,除了字符分类特征改为系统本身环境」的本地环境

其次,wcout为什么需要imbue?这又是一个历史遗留的发育不良,同样略。(甚至wcout本身都出生太早了)
wcout.imbue 的作用是告知怎么将 wchar_t[] 转换成系统输出需要的字符编码。
2022-12-09 16:56
快速回复:求助:wcout无输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042223 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved