在C++上读取二进制数据,其中不同的列具有不同的数据类型

Leo*_*fox 1 c++ file-io

我们有一个二进制文件,表示按列排列的数据.

每列都有不同的数据格式,例如:

  • 第1列:8个字节(unsigned long int)
  • 第2列:4个字节(int)
  • 第3列:4个字节(浮点数)

用C++读取这些文件的最佳方法是什么,我可以在matlab中完成,但我真的不知道如何在C++中做到这一点

Dea*_*ors 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));
Run Code Online (Sandbox Code Playgroud)

您转换了一个char指针,因为它被读取为一个字节数组(char是一个字节).如果你想循环这个过程:while(fileStream) {...}将执行直到没有更多要阅读

  • 当然,这确实假设文件中的字节的排序方式与主机体系结构中的字节相同. (3认同)