Estoy codificando un programa que lee datos directamente de la entrada del usuario y me preguntaba cómo podría (sin bucles) leer todos los datos hasta EOF desde la entrada estándar. Estaba considerando usar cin.get(input, '\0')
pero '\0'
no es realmente el carácter EOF, que solo lee hasta EOF o '\0'
, lo que ocurra primero.Cómo leer hasta EOF desde cin en C++
¿O está utilizando los bucles la única manera de hacerlo? Si es así, ¿cuál es la mejor manera?
Algo que tener cuidado de que aquí es cuando se está leyendo a partir de archivos que han sido canalizados a través de la entrada estándar, es que esta y la mayoría de las respuestas proporcionadas agregarán un avance de línea adicional al final de su entrada. No todos los archivos terminan con un avance de línea, pero cada iteración del ciclo agrega "std :: endl" a la transmisión. Esto puede no ser un problema en la mayoría de los casos, pero si la integridad del archivo es un problema, esto puede volver a morderte. – Zoccadoum
Esta no debería ser la respuesta más votada. Consulte la respuesta wiki de la comunidad a continuación. Además, tal vez vea esta pregunta: https://stackoverflow.com/questions/3203452/how-to-read-entire-stream-into-a-stdstring – loxaxs