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?
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.
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.
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.
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
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.
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