地獄0、
c ++でユニコードをサポートするテキストファイル(実際にはcsvファイルですが、nvm)を作成する必要があります。私が変更しなければならないソース コードは、既にうまく機能していますが、ANSI しかサポートしていません。wofstream で動作しています:
std::wofstream x;
CString stringToWrite;
/*
* getting file
*/
x.open (szFile, std::ios_base::out | std::ios_base::trunc);
/*
* assigning content to stringToWrite
*/
x.write (stringToWrite.GetString(), stringToWrite.GetLength());
どこでも見つけた簡単な解決策は、次のことです。
x.imbue(std::locale(x.getloc(),
new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
x.open (szFile, std::ios_base::out | std::ios_base::trunc);
しかし、いくつかの理由で、codecvt をインスタンス化できません。visualStudio は、パラメーターが宣言に適合しないと言っています。理由がわかりません。私の推測の 1 つは、私のコンパイラがそれをサポートしていないということでしたが、今はどう考えればよいかわかりません。
私は別の解決策も試しました:ファイルがutf-16でエンコードされていることを宣言するには、次のように最初の文字を手動で記述します:
x << "\0xFFFE";
動作しています(エクスポートされたファイルはutf-16でエンコードされています)が、CStringをutf-16で「変換」する必要があるため、ファイルへのすべての書き込みが台無しになっていますが、2日間試してもうまくいきません。
最初の解決策を使用できれば素晴らしいと思いますが、コンパイラがそれを実行したくない理由が本当にわかりません。同じ問題を抱えている人をインターネット上で見つけることができません。なぜこれを行っているのか、またはutf-16 txtファイルを書き込むための別の代替ソリューションがある場合は、本当に感謝します<3