Вывод прогресса чтения файла в консоль С++

в процессе чтения файла хотелось бы видеть прогресс в консоли в процентах. Написал следующую функцию для чтения:

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%. Как можно это исправить?


Ответы (0 шт):