Строка 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)
хотя, возможно, это опечатка.