将二进制文件读取到向量元素的地址中

read binary file into the address of vector element

本文关键字:地址 元素 向量 二进制文件 读取      更新时间:2023-10-16

i有一个二进制文件,其中包含8个字节的双倍。我想将双打阅读到vector<double>中,请参见下文

  ifstream infile("x.dat", ios::binary);
  vector<double>data(filesize/8, 0.0);
  for(int i=0; i< (filesize/8); ++i)
  {
    infile.read( (char *) (&data[i]), sizeof(double) );
  }

我知道,如果数据是C数组,但不确定这对vector是否有效,因为vector包含的内容比C阵列(vector具有方法)更多,是否表示地址&data[i]表示数据地址ITH元素的成员?

是的,每个向量元素只是一个 double对象, &data[i]指向该对象。

实际上,所有double对象都在连续的数组中,因此您可以立即阅读它们:

infile.read((char*)data.data(), filesize);

当然,如下所述,这需要文件以与您程序的二进制 double值兼容的格式编写,否则值将是垃圾。