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

时间:2017-06-06 01:38:07

标签: c++ stl locale language-lawyer ostream

根据C ++标准(C ++ 17草案(N4659)的第30.7.5.2.4节),如果out << ch ch ch不会对char执行扩展操作是outstd::ostreamstd::ctype<char>::widen()

这是否意味着标准保证char(即char - > widen(ch) == ch)是所有字符的标识函数(out << 'x')基本的源字符集?

如果是这样,反过来又是否意味着标准要求所有语言环境使用基本源字符集中相同的非宽(或多字节)字符编码?

如果没有,看起来像out << 'x',对文字有特定的字符编码选择,可能不适用于所有语言环境,即使它在某些语言环境中有效。也就是说,可能没有选择字符文字编码,因此#header-left { background-image: url(http://dronework.com.au/wp-content/uploads/2017/05/banner-left-side-02-02.svg); background-repeat: no-repeat; background-color: silver; width: 50%; height: 100px; float: left; } #header-right { background-image: url(http://dronework.com.au/wp-content/uploads/2017/05/banner-right-side-01.svg); background-repeat: no-repeat; background-color: lightgray; width: 50%; height: 100px; float: right; background-position: right; }可以同时在所有语言环境中工作。

1 个答案:

答案 0 :(得分:1)

不,它只是说

的情况
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

在所有其他情况下,语言环境用于可选地转换字符,而不限制语言环境可能做的事情。