Что такое C ++-эквивалент этого кода Matlab (Fread Matlab против Fread C / C ++)? - PullRequest
0 голосов
/ 11 июня 2018

Попытка преобразовать этот код 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 голосов
/ 11 июня 2018

Вы, вероятно, хотите использовать входные потоки.

Например, чтобы прочитать одну строку

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...