Esta crónica ha sido probado por nuestros expertos así aseguramos la veracidad de nuestra esta crónica.
Solución:
Las diferencias entre los modos binario y de texto están definidas por la implementación, pero solo se refieren al nivel más bajo: no cambian el significado de cosas como <<
y >>
(que insertan y extraen datos textuales). Además, formalmente, generar todos menos algunos caracteres no imprimibles (como 'n'
) es un comportamiento indefinido si el archivo está en modo de texto.
Para los sistemas operativos más comunes: bajo Unix, no hay distinción; ambos son idénticos. Bajo Windows, 'n'
internamente se asignará a la secuencia de dos caracteres CR, LF (0x0D, 0x0A) externamente, y 0x1A se interpretará como un final de archivo al leer. Sin embargo, en los sistemas operativos más exóticos (y en su mayoría extintos), podrían estar representados por tipos de archivos completamente diferentes en el nivel del sistema operativo, y podría ser imposible leer un archivo en modo de texto si estuviera escrito en modo binario, y viceversa. O podría ver algo diferente: espacio en blanco adicional al final de la línea, o no 'n'
en modo binario.
Con respecto a establecer siempre std::ios_base::binary
: mi política para los archivos portátiles es decidir exactamente cómo los quiero formatear, establecer binarios y generar lo que quiero. Que a menudo es CR, LF, en lugar de solo LF, ya que ese es el estándar de red. Por otra parte, la mayoría
Los programas de Windows no tienen problemas solo con LF, pero he encontrado más de unos pocos programas de Unix que tienen problemas con CR, LF; lo que aboga por usar sistemáticamente solo LF (que también es más fácil). Hacer las cosas de esta manera significa que obtengo los mismos resultados sin importar si estoy usando Unix o Windows.
Aquí puedes ver las reseñas y valoraciones de los lectores
Si conservas algún reparo y capacidad de enriquecer nuestro crónica te invitamos añadir una nota y con mucho placer lo ojearemos.