私は単純な単純な単純なユニコードファイルをint変数に数えて読み込みたいと思っていますが、何時間も検索しても、仕事!Visual C++でシンプルなユニコードのテキストファイルを読み込んでパースする
私のファイルのようになります。
1337 42 23
それはユニコードなので、それはまた、冒頭では0xFF 0xFEのBOMマークが付いています。
私はwifstreamとfwscanf()を試しましたが、どちらもBOMに固執し、BOMをスキップしても両方の関数は "1"しか読みません(0x00文字で混乱してしまいます。ユニコードを理解する)。
私の質問は、どのようにユニコードのVisual C++アプリケーションで単純なユニコードファイルを読み、解析するのですか?
はここ(バージョンfwscanf)私のソースです:
int _tmain(int argc, _TCHAR* argv[])
{
int x;
FILE * f = _wfopen(L"bla.txt", L"r+");
if (!f) return -1;
fseek(f, 2, SEEK_SET); // skip the BOM mark
fwscanf(f, L"%d", &x);
wprintf(L"Number read: %d\n", x);
fclose(f);
return 0;
}
、出力は次のとおりです。
Number read: 1
ありがとうございます!マットのソリューションも機能しますが、これは少しクリーンです。なぜユニコードがユニコードのアプリで好まれるエンコーディングではないのだろうか。それでは、Visual Studioの最初のことは意味をなさないことではありません。 – blade
それはあまりにも多くのレガシーコードを壊すでしょう。 –