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而不是每次都轉換?或者它不重要? –