0

地獄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

4

1 に答える 1

0

問題は解決しました、私はこれを見つけました: http://www.codeproject.com/Articles/9539/A-UTF-Class-for-Reading-and-Writing-Uni​​code -Fil

それはまさに私が探していたものです。

于 2016-04-25T09:48:10.423 に答える