files - read binary file c++
C++ Filehandling: Diferencia entre ios: app e ios: ate? (5)
¿Cuál es la diferencia entre ios::ate
y ios:app
al escribir 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 esto correcto?
Aplicación:
no podemos mover el puntero. Será solo al final
Ate:
podemos mover el puntero del registro a cualquier otro lugar
Es al revés. Cuando ios::ate
está configurado, 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. Dado que todas las escrituras están precedidas implícitamente por búsquedas, no hay forma de escribir en otro lugar.
Está bastante bien documentado here .
ios::ate
"establece el indicador de posición de la secuencia hasta el final de la secuencia al abrirla".
ios:app
"establece el indicador de posición de la secuencia hasta el final de la secuencia antes de cada operación de salida".
Esto significa la diferencia que ios::ate
coloca su posición al final del archivo cuando lo abre. ios::app
lugar lo coloca al final del archivo cada vez que descarga la transmisión. Si, por ejemplo, los dos programas que escriben en el mismo archivo de registro ios:ate
anularán todo lo que el otro programa haya agregado al archivo desde que lo abrió. ios:app
saltará al final del archivo cada vez que su programa agregue una entrada de registro.
La opción ios::ate
es para operaciones de entrada y salida y ios::app
nos permite agregar datos al final del archivo.
Se especifican de la siguiente manera (en 27.5.3.1.4 de C ++ 11):
app
busca terminar antes de cada escritura
ate
abierto y tratar de terminar inmediatamente después de la apertura
Con ios::app
la posición de escritura en el archivo es "adhesiva": todas las escrituras están al final, sin importar dónde busque.