首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ std::ctype<char>::widen()的作用是什么?

C++ std::ctype<char>::widen()的作用是什么?
EN

Stack Overflow用户
提问于 2017-06-06 09:38:07
回答 1查看 510关注 0票数 11

根据C++标准( C++17 draft (N4659)的§30.7.5.2.4),如果chchar,而outstd::ostream,则out << ch不会在ch上执行加宽操作。

这是否意味着std::ctype<char>::widen() (即char -> char)被标准保证为基本源字符集中所有字符的标识函数(widen(ch) == ch)?

如果是这样,这是否意味着标准要求所有地区都使用基本源字符集的相同非宽(或多字节)字符编码?

如果不是这样,看起来out << 'x'可能并不是在所有语言环境下都能工作,即使它在某些地区也能工作。也就是说,可能没有字符原义编码的选择,这样out << 'x'就可以同时在所有区域设置中工作。

EN

回答 1

Stack Overflow用户

发布于 2017-08-26 04:06:24

不,它只是说在这种情况下

代码语言:javascript
运行
复制
template<class traits>
basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& out, char c);

在流和<<运算符都以相同的char类型进行交易的情况下,不存在转换。

如果c的类型为char,并且流的字符类型不是char,则seq由out.widen(c)组成;否则seq由c组成。

在所有其他情况下,区域设置用于可选地转换字符,而不限制区域设置可能执行的操作。

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

https://stackoverflow.com/questions/44380123

复制
相关文章

相似问题

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