Gestión de archivos C++: Diferencia entre ios: app e ios: ate?


Cuál es la diferencia entre ios::ate y ios:app cuando se escribe en un archivo.
En mi opinión, ios::app le da la capacidad de moverse en el archivo, mientras que con ios::ate solo puede leer/escribir al final del archivo. ¿Es correcto?

Author: iammilind, 2012-04-28

5 answers

Es al revés. Cuando se establece ios::ate, la posición inicial será el final del archivo, pero usted es libre de buscar a partir de entonces. Cuando se establece ios::app, todas las operaciones de salida se realizan al final del archivo. Puesto que todas las escrituras están implícitamente precedidas por búsquedas, no hay manera de escribir en otra parte.

 60
Author: Jon Purdy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-28 01:17:05

Se especifican como sigue (en 27.5.3.1.4 de C++11):

app buscar terminar antes de cada escritura

ate abrir y tratar de terminar inmediatamente después de la apertura

Con ios::app la posición de escritura en el archivo es "pegajosa" all todas las escrituras están al final, sin importar dónde busque.

 29
Author: Steve Jessop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-28 01:16:30

Está bastante bien documentado aquí.

ios::ate "establece el indicador de posición de la corriente al final de la corriente al abrirse."

ios:app "establezca el indicador de posición del flujo al final del flujo antes de cada operación de salida."

Esto significa la diferencia que ios::ate pone su posición al final del archivo cuando lo abre. ios::app en su lugar lo pone al final del archivo cada vez que limpia su flujo. Si por ejemplo dos programas que escriben a la misma el archivo de registro ios:ate anulará cualquier cosa que haya sido agregada al archivo por el otro programa desde que su programa lo abrió. ios:app saltará al final del archivo cada vez que su programa agregue una entrada de registro.

 18
Author: Haatschii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-13 13:41:01

Aplicación:

No podemos mover el pointer.It será solo al final

Ate:

Podemos mover el puntero del registro a cualquier otro lugar

 6
Author: naveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-23 10:14:17

La opción ios::ate es para operaciones de entrada y salida y ios::app nos permite añadir datos al final del archivo.

 0
Author: toijam sonalika devi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-17 06:08:58