C ++ Обработка файлов: разница между ios: app и ios: ate?

В чем разница междуios::ate а такжеios:app при записи в файл.
По-моему,ios::app дает вам возможность перемещаться в файле, тогда как сios::ate он может только читать / писать в конце файла. Это правильно?

Ответы на вопрос(5)

ios::ate опция для операций ввода и вывода и ios::app позволяет нам добавлять данные в конец файла.

Они определены следующим образом (в 27.5.3.1.4 C ++ 11):

app seek to end before each write

ate open and seek to end immediately after opening

Сios::app позиция записи в файле "липкая" - все записи в конце, где бы вы ни искали.

Это довольно хорошо задокументированоВот.

ios::ate «устанавливает индикатор положения потока в конец потока при открытии».

ios:app «устанавливать индикатор положения потока в конец потока перед каждой операцией вывода».

Это означает, что разницаios::ate ставит вашу позицию в конец файла, когда вы открываете его.ios::app вместо этого помещает это в конец файла каждый раз, когда вы очищаете свой поток. Если, например, вы две программы, которые пишут в один файл журналаios:ate переопределит все, что было добавлено в файл другой программой, так как ваша программа открыла его.ios:app вместо этого будет переходить к концу файла каждый раз, когда ваша программа добавляет запись в журнал.

Это наоборот. когдаios::ate установлено, начальная позиция будет концом файла, но вы можете искать после этого. когдаios::app установлен,all Операции вывода выполняются в конце файла. Поскольку все записи неявно предшествуют поискам, нет возможности писать в другом месте.

App:

we cannot move the pointer.It will be only at end

Ate:

we can move the record pointer to any other place

ВАШ ОТВЕТ НА ВОПРОС