std :: :: ios_base comió posicionar el cursor al final del texto, mientras que std :: ios_base_app añade el texto (con una operación de escritura) al final, aunque todavía se puede leer desde el principio :)
std :: ios_base :: trunc trunca el archivo para que se vacíe, mientras que std :: ios_base :: out solo especifica que desea escribir en la secuencia.
Actualmente no puedo citar el estándar (en mi tableta y Acrobat Reader no me deja copiar) pero desde el párrafo 27.4.2.1.4 de ISO 14882: 1998 la información que puede ver en el enlace es casi exacta : http://cplusplus.com/reference/iostream/ios_base/openmode/
en resumen:
std::ios_base::app = append
Anexar al final de la corriente por "buscar [ing] para finalizar antes de cada escritura"
std::ios_base::ate = At The End
abierto y buscar immed iately al final después de la apertura
std::ios_base::binary = binary
Realiza la operación en binario en oposición al texto
std::ios_base::in = input
abierto en modo de lectura
std::ios_base::out = output
abierto en modo escritura
std::ios_base::trunc = truncate
Truncar la secuencia en abierto En g.
Estos valores son sólo banderas, por lo que puede abrir una secuencia de lectura/escritura binaria al final con:
std::ios_base::in | std::ios_base::out | std::ios_base::ate | std::ios_base::binary
En cuanto a la forma de utilizar esos valores, es como desee. Se declaran como campos públicos estáticos en la clase std::ios_base
(ver 27.4.2) por lo que es posible acceder a ellos usando std::ios::ate
o incluso algo así como cout.binary
!
Los puntos donde se debe tomar la atención es que std::ios_base::ate
no implica std::ios_base::app
ni tampoco implica std::ios_base::out
std::ios_base::trunc
. Cada campo tiene un significado diferente y un caso de uso diferente, aunque la mayoría de ellos no se pueden usar solos :)
'std :: ios_base :: in' y' std :: ios :: in' deben estar idéntico, depende de usted. – oldrinb
@veer sí lo son, como también cualquier :: ios_base :: descenddant :: in :) – Geoffroy