2017-06-06 139 views
10

根據C++標準(§30.7.5.2.4C++ 17草案(N4659)的),out << ch不會在ch執行加寬操作中,如果chcharoutstd::ostreamC++ std :: ctype的作用是什麼<char> :: widen()?

這是否意味着std::ctype<char>::widen()(即,char - >char)由標準保證是在基本的源字中的所有字符的標識功能(widen(ch) == ch)設置?

如果是這樣,這反過來是否意味着標準要求所有區域設置使用基本源字符集中相同的非寬(或多字節)字符編碼?

如果不是,看起來像out << 'x',對文字的字符編碼的特定選擇,可能無法在所有語言環境中工作,即使它在某些情況下工作。也就是說,可能不會選擇字符文字編碼,因此out << 'x'可以在所有語言環境中同時運行。

回答

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組成。

在所有其他情況下,區域設置用於可選地轉換字符,而不會限制區域設置可能執行的操作。

相關問題