私はUTF-8テキストファイルを持っています。これは単純なものを使用して読んでいます:
ifstream in("test.txt");
次に、UTF-8エンコーディングまたはUnicodeになる新しいファイルを作成したいと思います。 ofstream
またはその他でこれを行うにはどうすればよいですか?これにより、ANSIエンコーディングが作成されます。
ofstream out(fileName.c_str(), ios::out | ios::app | ios::binary);
わかりました、ポータブルバリアントについて。 C++11
標準を使用する場合は簡単です(この問題を永久に解決する"utf8"
のような追加のインクルードがたくさんあるため)。
ただし、古い標準でマルチプラットフォームコードを使用する場合は、次の方法を使用してストリームで記述できます。
stxutif.h
を追加します次のように、ファイルをANSIモードで開き、ファイルの先頭にBOMを追加します。
std::ofstream fs;
fs.open(filepath, std::ios::out|std::ios::binary);
unsigned char smarker[3];
smarker[0] = 0xEF;
smarker[1] = 0xBB;
smarker[2] = 0xBF;
fs << smarker;
fs.close();
次に、ファイルをUTF
として開き、そこにコンテンツを書き込みます。
std::wofstream fs;
fs.open(filepath, std::ios::out|std::ios::app);
std::locale utf8_locale(std::locale(), new utf8cvt<false>);
fs.imbue(utf8_locale);
fs << .. // Write anything you want...