首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印宽字符串?

如何打印宽字符串?
EN

Stack Overflow用户
提问于 2014-02-25 12:36:51
回答 1查看 1.7K关注 0票数 1

Cyrillic小写a的ISO-10646代码点值为0x430,因此我尝试了以下操作:

代码语言:javascript
复制
char u8str[] = u8"Cyrillic lowercase a is: \u0430.";
cout << u8str;

代码语言:javascript
复制
wchar_t wstr[] = L"Cyrillic lowercase a is: \u0430.";
wcout << wstr;

西里尔小写字母a通过u8str成功打印,但不通过wstr打印。

至于u8str,我已经确认它的存储是用这些字符的utf-8编码值初始化的(西里尔小写a占用2字节和值D0 B0)。一切看起来都很好。西里尔字母被正确打印出来了。

至于wstr,我假设wstr数组中的每个wchar_t都是用执行宽字符集中字符编码的数值来初始化的。虽然我不完全理解execution wide-character set是什么,但是我检查了存储在数组中的西里尔小写的值是0x430。不管怎样,西里尔字母没有被正确打印出来。(其他字符都可以。)

我是wchar_t的新手,所以如果这个问题太初级的话,我很抱歉。我用宽字符串打印西里尔字母时出了什么问题?这是一个字母在执行宽字符集中的表示问题(毕竟这个字符集是什么)?抑或是有关碘流设施使用不当的问题?

EN

回答 1

Stack Overflow用户

发布于 2014-02-25 12:42:28

来自:http://www.cplusplus.com/reference/iostream/cout/

程序不应将cout上的输出操作与wcout上的输出操作(或与stdout上的其他面向宽的输出操作)混合使用:一旦在其中任何一个上执行了输出操作,标准输出流就会获得一个只能在stdout上调用freopen才能安全更改的方向(无论是窄的还是宽的)。

所以只使用两个中的一个。

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

https://stackoverflow.com/questions/22014433

复制
相关文章

相似问题

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