0
我看到允许将char
写入std::wostream
(例如,std::wcout<<"looooool";
)。Wide streams and char
char
如何更改为wchar
(如果发生了这种情况)?
我看到允许将char
写入std::wostream
(例如,std::wcout<<"looooool";
)。Wide streams and char
char
如何更改为wchar
(如果发生了这种情况)?
当您发送一个char
或一个c字符串(char *
)到一个宽的流时,单个八位字节(字节)被转换为wchar与widen
。 std::string
没有自动转换。
您不能以这种方式将多字节UTF-8字符发送到宽字符流中,因为字节一次只能转换一个字符。在默认语言环境中,不会将非ASCII字符转换为宽字符,因此转换将失败,从而将宽流转换为错误状态。
您是否利用此转换取决于您;该标准允许它,对于字符和字符串文字,至少对我来说似乎是无害的。但请注意,发送到宽视频流的字符串对象必须是std::wstring
,而不是std::string
。
http://en.cppreference.com/w/cpp/string/multibyte/mbrtowc –
我没有看到任何'std :: string's。 – chris
那么明智的做法还是不把char添加到广泛的流中?或者我更好地添加wchar而不是每次都转换?或者它不重要? –