Глядя на этот код, я вижу, что ваш журнал просто открывается с помощью append.Так что со временем это станет довольно большим.
Я не могу сказать, что нет другой причины, по которой этот код не будет работать, но файл размером более 2 ГБ, безусловно, может справиться с задачей.Я не помню, если у режима добавления есть проблемы с этим, но внутренне это может использовать поиск.Seek определенно имеет проблемы с большими файлами.В Linux вы бы использовали семейство функций fseek64
.Windows имеет свои собственные версии с подчеркиванием бородавок из-за несовместимости.
Когда вы работаете с потоками, вы должны также проверить ее флаги ошибок, на самом деле она не выдаст, когда что-то пойдет не так.Вы проверяете после открытия, но другие операции также могут потерпеть неудачу.
Более конкретно, звонок на std::istream::ignore
.Ваш GotoLine
не проверяет eof.С точки зрения дизайна, я бы с подозрением отнесся к этому.Это может работать, но это, конечно, не должно проходить проверку кода.
Как ничтожество, ошибки должны быть напечатаны в std::cerr
и возвращать 1.:)