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

时间:2018-06-11 10:18:28

标签: c++ c file

尝试转换此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,而且它不是。当我打开文件并加载内容,然后打印它时,它没有显示任何内容。

1 个答案:

答案 0 :(得分:0)

您可能想要使用输入流。

E.g。阅读一行

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);
}