C++ Filehandling: разница между 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стремиться закончить перед каждой записью
ateоткрыть и стремиться закончить сразу после открытия
С ios::app позиция записи в файле "липкая" - все записи находятся в конце, независимо от того, где вы ищете.
это довольно хорошо документировано здесь.
ios::ate " устанавливает индикатор положения потока в конец потока при открытии."
ios:app " установите индикатор положения потока в конец потока перед каждой операцией вывода."
это означает разницу, что ios::ate помещает вашу позицию в конец файла, когда вы его открываете. ios::app вместо этого помещает его в конец файла каждый раз, когда вы смываете поток. Если например вы две программы, которые пишут в один и тот же файл журнала ios:ate переопределит все, что было добавлено в файл другой программой, так как ваша программа открыла его. ios:app вместо этого будет прыгать в конец файла каждый раз, когда программа добавляет запись в журнал.
App:
мы не можем переместить указатель.Это будет только в конце
ел:
мы можем перемещать указатель записи в любое другое место
на ios::ate опция предназначена для операций ввода и вывода и
ios::app позволяет добавлять данные в конец файла.