为什么/如何将非宽字符串传递给wstringstream :: operator&lt; <! - ? - >是有效的

时间:2015-01-05 11:11:42

标签: c++ visual-c++ stl

wstring ss;
ss << L"Some wide-char text" << " and some non-wide-char text";

char_type不是char时,这似乎工作得很好,但为什么呢?

2 个答案:

答案 0 :(得分:1)

所有流都有char的重载,无论模板的CharT如何。

http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2

template< class CharT, class Traits >
basic_ostream<CharT,Traits>& operator<<( basic_ostream<CharT,Traits>& os, 
                                         const char* s );

答案 1 :(得分:0)

因为它是。

  

插入了std::char_traits<char>::length(s)个字符   在插入之前,首先,使用os.widen()扩大所有字符。

source