1

列に配置されたデータを表すバイナリ ファイルがあります。

各列には、次のように異なるデータ形式があります。

  • カラム 1: 8 バイト (unsigned long int)
  • 列 2: 4 バイト (int)
  • カラム 3: 4 バイト (float)

これらのファイルをC++で読み取る最良の方法は何ですか?matlabで実行できますが、C++でそれを行う方法についてはあまり手がかりがありません

4

1 に答える 1

5

これらの値が適切であると仮定すると、次のようになります。

unsigned long int dataMember0 = 0;
int dataMember1 = 0;
float dataMember2 = 0.0;

std::ifstream fileStream("file.bin", std::ios::in | std::ios::binary);
fileStream.read((char*)&dataMember0, sizeof(unsigned long int));
fileStream.read((char*)&dataMember1, sizeof(int));
fileStream.read((char*)&dataMember2, sizeof(float));

char ポインターはバイト配列として読み取られるため、キャストします (char は 1 バイトです)。このプロセスをループしたい場合:while(fileStream) {...}読み取るものがなくなるまで実行します

于 2013-10-09T21:19:31.950 に答える