в процессе чтения файла хотелось бы видеть прогресс в консоли в процентах. Написал следующую функцию для чтения:
void ReadFile(const string& FilePath, vector<int>& freq)
{
ifstream f(FilePath);
int FileSize = GetSize(FilePath);
int counter = 0;
cout << "Reading file: " << FilePath << endl << endl;
while (!f.eof())
{
char ch;
f.read(&ch, sizeof(ch));
++freq[static_cast<unsigned char>(ch)];
int prog = (counter + FileSize % 20) * 100 / FileSize;
cout << "\r" << prog << "%" << flush;
++counter;
}
cout << "\n\nReading completed\n\n";
}
Но счётчик останавливается на 97%. Как можно это исправить?
\n\rв размер пошли как 2 байта, при чтении - как один... Вот и разница.while (!f.eof()), кстати, тоже ошибка, но в другую сторону и только на одно чтение. Очередной альтернативно одаренный препод неверно рассказал, как конец файла проверять?... – Harry Jul 11 '21 at 13:10