Я хотел сжать размер большого текстового файла со значениями с плавающей запятой в двоичный файл .dat, поэтому я использовал (на c ++):
// the text stream
std::ifstream fin(sourceFile);
// the binary output stream
std::ofstream out(destinationFile, std::ios::binary);
float val;
while(!fin.eof())
{
fin >> val;
out.write((char *)&val,sizeof(float));
}
fin.close();
out.close();
Затем я хотел прочитать все значения с плавающей точкой из ранее созданного двоичного файла в массив значений с плавающей точкой.
Но когда я пытаюсь прочитать из этого файла, я получаю исключение в последней строке кода (процесс чтения):
// test read
std::ifstream fstream(destinationFile, std::ios::binary);
__int64 fileSize = 0;
struct __stat64 fileStat;
if(0 == _tstat64(destinationFile, &fileStat))
{
fileSize = fileStat.st_size;
}
//get the number of float tokens in the file
size_t tokensCount = fileSize / sizeof(float);
float* pBuff = new float[tokensCount];
fstream.read((char*)&pBuff, tokensCount * sizeof(float));
Что я делаю не так?