[英]What happens if I imbue basic_stream<char> with locale with codecvt_utf16<char> facet?
是否指定了如果我將basic_stream<char>
codecvt_utf16<char>
具有codecvt_utf16<char>
方面的語言環境,將會發生什么情況?
基本上,我使用typedef wchar_t tchar;
和typedef char tchar;
更改(稱為我的)庫的Unicode和非Unicode構建的接口。 我想通過始終使用codecvt_utf16<tchar>
構面在區域設置中codecvt_utf16<tchar>
文件流來簡化源代碼。 無論如何,這會工作嗎?
(我不介意這樣注入的fstream
讀取的文件是否必須僅包含ASCII或僅包含在當前全局語言環境中可表示的代碼點。)
編輯:
鑒於codecvt_utf16<char>
行為似乎未指定,那么將basic_stream codecvt_utf16<wchar_t>
怎么辦? 是否指定了此行為?
對於C ++ 0x, codecvt_utf*<>
使用寬字符實例化codecvt_utf*<>
。 如果未指定使用char
會發生什么,唯一知道的方法就是嘗試。
請記住,codecvt_utf16會與外部UTF-16表示形式進行轉換。 也就是說,您的文件應該以UTF-16編碼。 您可能要考慮改用UTF-8。
附帶說明一下,為什么今天有人會想要任何非Unicode的東西,這對我來說還是個謎。 人們喜歡使用受限字符集還是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.