割り当ての一部として、int
,char
のデータ型からなるバイナリファイルからデータを読み取る必要があります。このバイナリファイルは、それぞれ96バイトのレコードに分割されます。私はchar
バッファにこれらの96バイトを読み込み、私が持っている情報に従ってそれらを分割しようとしています。しかし、バッファからint
の値を取得しようとすると、何も得られません。これで私を助けてくれますか?C++ファイル操作
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
int main()
{
char buffer[100];
char *p;
char temp[10];
int val;
fstream ifs,ofs;
ifs.open("write.bin",ios::binary);
if(ifs.read(buffer,96))
{
cout << "READ" << endl;
}
p = buffer;
memcpy(temp,buffer,4);
cout << temp << endl;
val = atoi(temp);
cout << val << endl;
}
私はmemcpy
の代わりにもstrncpy
を使用。 出力はval
では0、temp
では空白です。
問題が発生しているコードを表示すると、おそらく役に立ちます。 –
'ifs.open(...)'の 'ios :: in'フラグを忘れていませんか? 'ifs.seekg(0);'を実行してから 'ifs.read(...)'を呼び出してください。 – vissi2
あなたのレコードの構造は何ですか?あなたが文字列を読み込もうとしているようですが、データはバイナリ表現で表現されています。 – Matthias