Моя программа не может продолжать запись в файл через несколько часов и хотела бы узнать, смогу ли я обнаружить этот файл и, возможно, восстановить файл или просто запустить новый. Должен ли я просто проверить, является ли fail () истиной, и если да, восстановить файл?
Вы не можете получить конкретные коды ошибок из std :: ofstream, только независимо от того, была ли операция выполнена успешно или нет, поэтому, если вам нужно найти конкретный код ошибки (вероятно), вам может потребоваться обратиться к интерфейсам, специфичным для платформы.
Однако, что вы можете или должны сделать, это проверить возвращаемые значения от оператора<<(), std :: ofstream :: write () и std :: ofstream :: flush (), например, вот так:
std::ofstream of("...");
if (! (of << data))
{
retryOpenfile();
return;
}
Если операция записи не удалась, вы можете повторить попытку, чтобы открыть файл и продолжить, если это возможно.
Других решений пока нет …