0

こんにちは皆さん、私は次のようにバイナリファイルからバイナリデータを読み取るときに問題が発生します:

ファイルの内容:D3 EE EE 00 00 01 D7 C4 D9 40

char * afpContentBlock = new char[10];
ifstream inputStream(sInputFile, ios::in|ios::binary);

if (inputStream.is_open()))
{
    inputStream.read(afpContentBlock, 10);

    int n = sizeof(afpContentBlock)/sizeof(afpContentBlock[0]); // Print 4

    // Here i would like to check every byte, but no matter how i convert the 
    // char[] afpContentBlock, it always cut at first byte 0x00.
}

私はこれがバイト0x00の原因で起こることを知っています。どういうわけかそれを管理する方法はありますか?ofstreamオブジェクトで書き込もうとしましたが、10バイト全体を書き出すので問題なく動作します。とにかく、バイト配列全体をループしてバイト値をチェックしたいと思います。

どうもありがとうございます。

4

1 に答える 1

2

次のように、ifstream から読み取ったバイト数を取得する方がはるかに簡単です。

if (inputStream.is_open()))
{
   inputStream.read(afpContentBlock, 10);
   int bytesRead = (int)inputStream.gcount();

   for( int i = 0; i < bytesRead; i++ )
   {
      // check each byte however you want
      // access with afpContentBlock[i]
   }
}
于 2012-08-08T11:06:12.947 に答える