1

ワイド文字列があり、それを out|binary モードで開いた wofstream に書き込んでいます。結果のファイルを見ると、1 バイトおきに欠落しています。

バイナリ エディターを使用してビジュアル スタジオでファイルを開くと、1 バイトおきにゼロが表示されることを期待していましたが、ゼロが表示されません。

私が欠けているものを知っていますか?

ありがとう。


コードは次のようなものです。

CAtlStringW data = L"some data";
wofstream stream("c:\hello.txt", ios_base:out|ios_base:binary);
stream.write( data.GetBuffer(), data.GetLength() );
stream.close();
4

2 に答える 2

1

ページの下部にある「コミュニティ コンテンツ」を参照してくださいhttp://msdn.microsoft.com/en-us/library/f1d6b0fk(VS.80).aspx . つまり、pubsetbuf() を使用して、ストリームに (char ベースではなく) wchar_t ベースの内部バッファーを使用する必要があります。

于 2010-09-02T17:42:39.210 に答える
0

出力ワイド ストリームを使用してファイルに書き込むと、実際には、ワイド文字が他の 8 ビット エンコーディングに変換されます。

UTF-8 ロケールを使用している場合は、ワイド文字列を UTF-8 でエンコードされたテキストに変換します (ただし、MSVC は UTF-8 ロケールを提供しません)。そのため、通常、cp1251 などのコード ページまたは ASCII に変換しようとします。

于 2010-03-09T20:33:17.867 に答える