gpt4 book ai didi

c++ - 将二进制文件读入 vector 元素的地址

转载 作者:行者123 更新时间:2023-11-27 22:58:26 29 4
gpt4 key购买 nike

我有一个二进制文件,其中包含双倍大小的 8 字节。我想把 double 读成 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 array( vector 有方法),地址&data[i]是指第i个元素的数据成员的地址吗?

最佳答案

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

事实上,所有的 double 对象都在一个连续的数组中,所以你可以一次读取它们:

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

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

关于c++ - 将二进制文件读入 vector 元素的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30182994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com