コード:
#include <fstream>
const wchar_t * testArray[] =
{
L"Wszystkie kategorie równoważne",
L"Oczekiwane przepływy pieniężne",
L"Risk i dojrzałość",
L"Pozycja strategiczna i lata na rynku",
L"Prawdopodobieństwo oszacowania"
};
void FaultyFunction(void)
{
std::wofstream file("test.txt");
for (int i = 0 ; i < 100 ; ++i)
{
for (int j = 0 ; j < 5 ; ++j)
{
file << testArray[j] << L'\t';
}
file << L'\n';
}
}
int main(void)
{
FaultyFunction();
return 0;
}
実行後の「test.txt」:
Wszystkie categorie równowa
(はい、それはファイル全体です!)
さて、それがファイルのエンコーディングの問題なのか、それとも何の問題なのかはわかりませんstd::wofstream
が、結果は少なくとも奇妙です。しかし、ポーランド語の文字を削除すると:
const wchar_t * testArray[] =
{
L"Wszystkie kategorie rownowazne",
L"Oczekiwane przeplywy pieniezne",
L"Risk i dojrzalosc",
L"Pozycja strategiczna i lata na rynku",
L"Prawdopodobienstwo oszacowania"
};
ファイルの内容は期待どおりです。
Wszystkie kategorie rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania
Wszystkie kategorie rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania
Wszystkie kategorie rownowazne Oczekiwane przeplywy pieniezne Risk i dojrzalosc Pozycja strategiczna i lata na rynku Prawdopodobienstwo oszacowania
... (残りの 97 行はこのように続きます)
そして、まったく同じものtestArray
(ポーランド語の文字を使用) を使用して *.xls ファイル (libxl ライブラリを使用) にいくつかのことを書き込むと、怪我に侮辱を加えるために、すべてが正常に機能します。
どうしたの?ポーランド語の文字をテキスト ファイルに保存するにはどうすればよいですか?
編集:
実際には、同じコードを試してみましたが、std::string
and std::ofstream
(幅が広くない)でもうまくいきました(ポーランド語の文字)。では、ワイド文字の問題は何ですか?