Windows で Unicode UTF-8 ファイルを Wstring に読み取る
Windows で Unicode (UTF-8) ファイルを Wstring に読み取ると、
std::codecvt_utf8 を使用すると、UTF-8 バイト文字列と UCS2 または UCS4 文字列間の変換が簡素化されます。このファセットにより、UTF-8 ファイル (テキストとバイナリの両方) の読み取りと書き込みが可能になります。
ファセットを利用するには、目的のローカライズされた環境を定義するファセットをカプセル化するロケール オブジェクトを作成します。ロケール オブジェクトが作成されたら、それをストリーム バッファーに埋め込みます。
imbuing を使用した実装は次のとおりです。
#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 中国語 Web サイトの他の関連記事を参照してください。