这个 matlab 代码的C++等价物是什么(fread matlab vs fread C/C++)?

What's the C++ equivalent of this matlab code (fread matlab vs fread C/C++)?

本文关键字:C++ matlab fread vs 是什么 代码 等价物 这个      更新时间:2023-10-16

正在尝试转换此 matlab 代码:

fid = fopen([fpath, '/file.bin'],'rb');
content = fread(fid, 11,'single');

我目前的尝试如下:

FILE* f = fopen(filename.c_str(),"rb");
char *content = (char*) malloc (sizeof(float)*11);
size_t result;
result = fread(content,4,11,f);

这对我来说很有意义,但它不起作用。

更新

文件的第一行应该是这样的:

120.0 120.0 120.0 -1.0 -1.0 -1.0 0.05000000074505806 0.25 2.0 2.0 2.0

我还检查了f指针是否NULL,但事实并非如此。当我打开文件并加载内容,然后打印它时,它不显示任何内容。

您可能希望使用输入流。

例如,读取一行

std::ifstream f(filename);
std::array<float, 11> content;
std::copy_n(std::istream_iterator<float>(f), 11, content.begin());

或多个

std::ifstream f(filename);
std::vector<std::array<float, 11>> content;
for (std::string line; std::getline(f, line);) {
std::stringstream ss(line);
std::array<float, 11> datum;
std::copy_n(std::istream_iterator<float>(f), 11, datum.begin());
content.push_back(datum);
}