Можно ли установить «eof» в ofstream? - PullRequest
0 голосов
/ 19 сентября 2018

Я не мог найти почти никакой информации по этому вопросу.И если да, то при каких обстоятельствах можно установить eofbit (значение stream_instance.eof () истинно)?

Меня больше интересует независимый от потока, тот, который не связан с потоком if в некотором fstream, так что «общий» eofbit не может быть установлен ifstream (если возможно что-то подобное).

Если я просто записываю в файл, и на диске нет места, или операционная система не предоставляет другого места для записи, то я бы ожидал, что будет установлен только сбой или сбой, но конец достигнутфайла при записи в него не имеет смысла для меня.Однако никакой дискуссии по этому вопросу мне не удалось найти.

1 Ответ

0 голосов
/ 19 сентября 2018

Нет. eof() возвращает eofbit, который не имеет реального значения для выходного потока без связанного входного потока.

eofbit указывает, чтооперация ввода достигла конца последовательности ввода

[ios.types] / 3.1 , таблица 107

Действия, которые устанавливаютeofbit здесь перечислены , и все они действуют только на входные потоки.

Мы можем представить какой-то странный сценарий, специфичный для реализации, в котором EOF (в отличие от некоторого другого условия ошибки) будетбыть пораженным во время записи в файл - возможно, существует файловый буфер фиксированного размера, в который мы пишем через некоторые функции ОС - но, насколько я знаю, абстракции стандартной библиотеки не имеют отношения к этому случаю, и я никогда не видел и не слышалтакого API в первую очередь.

...