gpt4 book ai didi

c++ - 如何在 C++ 中将二进制数据作为 vector 获取?

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:51 25 4
gpt4 key购买 nike

我正在尝试读取二进制数据并将它们放入文件中的 vector 中:

std::ofstream outfile1("channel_1.dat", std::ios::binary | std::ios::out);
//...
outfile1.write((const char*)&buff1.front(), nwrite * sizeof(complex<short>));

我写了读取那个文件的代码:

int main(){
double total_bytes, vector_size;
streampos begin,end;
std::ifstream ifs("channel_1.dat", std::ios::binary | std::ios::in);
begin = ifs.tellg();
ifs.seekg (0, ios::end);
end = ifs.tellg();
total_bytes = end - begin; // 320MB, 32e7
vector_size = total_bytes/ sizeof(complex<short>); // 8e7
std::vector<std::complex<float> > v(vector_size);
ifs.read(reinterpret_cast<char*>(v.data()), vector_size*sizeof(complex<short>));
ifs.close();

for(int i=0;i<vector_size; i++){
std::cout <<i << v[i]<< std::endl;
}
}

但我仍然得到所有复 vector 的零,大约 8e7 个样本:

(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
(0,0)
...

我在 matlab 中使用了相同的文件并且它有效。谁能帮帮我?

最佳答案

std::vector buf(N/sizeof(double));//为 N/8 double 预留空间infile.read(reinterpret_cast(buf.data()), buf.size()*sizeof(double));//或 C++98 的 &buf[0]

假设整个文件是双重的,否则这将无法正常工作。使用这种格式..我希望它能起作用

关于c++ - 如何在 C++ 中将二进制数据作为 vector<complex> 获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425549/

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