在Windows 上將Unicode UTF-8 檔案讀入Wstring
在Windows 上將Unicode (UTF-8) 檔案讀入wstring可以使用C 11 的std::codecvt_utf8 方面可以有效實現。
使用 std::codecvt_utf8,可以簡化 UTF-8 位元組字串與 UCS2 或 UCS4 字串之間的轉換。此構面支援讀取和寫入 UTF-8 檔案(文字和二進位)。
要利用該構面,請建立一個區域設定對象,該物件封裝定義所需局部化環境的構面。建立語言環境物件後,將其註入流緩衝區。
這是使用注入的實現:
#include <sstream> #include <fstream> #include <codecvt> std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>)); std::wstringstream wss; wss << wif.rdbuf(); return wss.str(); }
注入流緩衝區後,將文件讀入wstring 非常簡單:
std::wstring wstr = readFile("a.txt");
或者,在使用字符串流之前設定全域C 語言環境將消除明確注入的需要:
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
這會將全域語言環境設定為預設值,這將自動適用於未來的串流緩衝區。
以上是如何使用 C 11 在 Windows 上將 Unicode (UTF-8) 檔案讀入 wstring?的詳細內容。更多資訊請關注PHP中文網其他相關文章!