根据C ++标准(C ++ 17草案(N4659)的第30.7.5.2.4节),如果out << ch
ch
ch
不会对char
执行扩展操作是out
,std::ostream
是std::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;
}
可以同时在所有语言环境中工作。
答案 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
。
在所有其他情况下,语言环境用于可选地转换字符,而不限制语言环境可能做的事情。