2010-02-08 40 views

Respuesta

22

ios::out abre el archivo para escritura.

ios::binary se asegura de que los datos se leen o escriben sin traducir nuevos caracteres de línea ay desde \r\n sobre la marcha. En otras palabras, exactamente lo que le das a la transmisión es exactamente lo que está escrito.

+0

y ¿qué significa usar ambos? –

+0

Bueno, estarías escribiendo en un archivo sin traducir ningún personaje. –

+2

Así que si no marco un ifstream como binario y leo, digamos 10 dobles, y Windows encuentra un '\ n' aleatorio en los datos, entonces la secuencia se expande de '10 * sizeof (double)' a '10 * sizeof (double) + 1' como' \ r' se inserta, y sobrescribe el final de mi doble buffer? – user14717

4

Al abrir un archivo con ios :: binary controla cómo se manejan los caracteres de nueva línea. En Windows, se expanden a pares CRLF. Eso es todo, no tiene ningún efecto sobre cómo funcionan las cosas como el operador < <.

+0

, pero ¿qué son los pares CLRF? –

+2

CLRF significa retorno de carro, avance de línea. Estos son los dos bytes utilizados para especificar una nueva línea en la codificación de texto de Windows. En su mayoría es redundante porque en una computadora, realmente solo necesitas un personaje de nueva línea. –

+3

Hace mucho tiempo, en la época de los teletipos y las máquinas de escribir, las máquinas de salida tenían carros que se movían hacia la izquierda para escribir a medida que se imprimían los caracteres. Un comando, 'Carriage Return', movió el carro hacia la izquierda. Otro comando, 'Linefeed', avanzó el papel a la siguiente línea. Estos dos comandos se pueden ejecutar de forma independiente para que el papel avance a la línea media (usando 'Linefeed') o reescriba la línea actual (usando' Carriage Return'). Como par, hacen que la impresión comience en el margen izquierdo de la siguiente línea. –

Cuestiones relacionadas