1

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

void ReadFile(const string& FilePath, vector<int>& freq)
{
    ifstream f(FilePath);
    int FileSize = GetSize(FilePath);
    int counter = 0;
cout &lt;&lt; &quot;Reading file: &quot; &lt;&lt; FilePath &lt;&lt; endl &lt;&lt; endl;

while (!f.eof())
{
    char ch;
    f.read(&amp;ch, sizeof(ch));
    ++freq[static_cast&lt;unsigned char&gt;(ch)];
    int prog = (counter + FileSize % 20) * 100 / FileSize;

    cout &lt;&lt; &quot;\r&quot; &lt;&lt; prog &lt;&lt; &quot;%&quot; &lt;&lt; flush;
    ++counter;
}
cout &lt;&lt; &quot;\n\nReading completed\n\n&quot;;

}

Но счётчик останавливается на 97%. Как можно это исправить?

lian
  • 265
  • Файл текстовый, \n\r в размер пошли как 2 байта, при чтении - как один... Вот и разница. while (!f.eof()), кстати, тоже ошибка, но в другую сторону и только на одно чтение. Очередной альтернативно одаренный препод неверно рассказал, как конец файла проверять?... – Harry Jul 11 '21 at 13:10
  • @Harry, препода нет. Учусь сам. Если не сложно, объясните как правильно прочитать. – lian Jul 11 '21 at 13:15
  • https://ru.stackoverflow.com/q/833980/185348 – eanmos Jul 11 '21 at 13:47

0 Answers0