私はバイナリの読み取りのためにはistreamを開いてるのchar配列を埋めるいないお読みください。はistream ::正しく
ifstream file;
file.open (this -> fileName.c_str(), ios::binary);
ファイルは、char配列のポインタに、良いですしながら、私は、その後、読み取ろう:
char data[numberOfBytes];
char * p = data;
file.read(p, numberOfBytes);
cout << "size: " << sizeof(p) << end
cout << "gcount: " << file.gcount() << endl;
cout << "strlen: " << strlen(p) << endl;
上記のそれぞれの出力が異なります。 Sizeof()は、charポインタの正しいサイズである4を生成します。 gcount()は、numberOfBytesの値が何であれ生成します。しかし、strlen()は他の小さな番号を返します。したがって、read()はistreamポインタnumberOfBytesを移動しましたが、char配列にこれらのバイトがありません。私はchar配列のすべてのバイトが欲しいです。これをどのように達成するのですか?何が起こっている?
以下のすべての答えは正しいです。これは私の問題でした:私はudpソケットを介してデータ配列を送信していました。受信側では、再構築しなければならなかったので(つまり、istreamに書き込む)、バイト数は分かりませんでした。私は単純にその情報を私のパケット構造に追加しました。今はすべてが良いです、ありがとう! –