Как прочитать строку из двоичного файла? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь прочитать строку (ver) из двоичного файла. количество символов (numc) в строке также считывается из файла. Вот как я читаю файл:

 uint32_t numc;
 inFile.read((char*)&numc, sizeof(numc));
 char* ver = new char[numc];
 inFile.read(ver, numc);
 cout << "the version is: " << ver << endl;

я получаю строку, которую я ожидаю, плюс некоторые другие символы. Как я могу решить эту проблему?

1 Ответ

1 голос
/ 09 июля 2020

Строка char* представляет собой последовательность символов с завершающим нулем . Ваш код игнорирует часть завершения nul. Вот как это должно выглядеть

uint32_t numc;
inFile.read((char*)&numc, sizeof(numc));
char* ver = new char[numc + 1]; // allocate one extra character for the nul terminator
inFile.read(ver, numc);
ver[numc] = '\0'; // add the nul terminator
cout << "the version is: " << ver << endl;

Также sizeof(numc) не size(numc) хотя, возможно, это опечатка.

...