1

私のMFCプログラムはユニコード環境にあるため、以下のコードは正しく機能しません。

::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);

結果は「123」で、これは「123456」であるはずです。

インターネットで、UnicodeBOMでこれを解決できることがわかりました。そこで、以下のようにコードを変更しました。

WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);

ただし、違いはありません。

それは単純な問題のようですが、私はこれに対する解決策を探すのに迷っています。

どんなアイデアでも大歓迎です。前もって感謝します。

4

2 に答える 2

4

Writefile「テキスト」を書き込みません:「バイト」を書き込みます。はのlstrlenW数を返しますwchar_t。3番目のパラメータに「書き込むバイトsizeof(wchar_t)数」を与えるために乗算をsholdします

于 2012-03-26T06:25:45.223 に答える
2

lstrlenW書き込むデータの量を決定するために使用する必要WriteFileはありません。コードポイントの数ではなく、書き込むバイト数を指定する必要があります。今、あなたはそれに6を言っています、それは3文字のために十分なバイトです。

于 2012-03-26T06:22:47.947 に答える