Red de conocimientos turísticos - Información de alquiler - Cómo leer la misma línea varias veces usando la función getline

Cómo leer la misma línea varias veces usando la función getline

Primero debes comprender la forma de la función getline que deseas utilizar.

getline (char* s, streamsize n, char delim);

El primer parámetro es la ubicación de almacenamiento, el segundo parámetro es el número máximo de caracteres a leer y el tercero parámetro El primer parámetro es el terminador, el valor predeterminado es '\n', puede configurarlo usted mismo

Su programa usa '\n' como terminador de forma predeterminada, lo que solo causará el problema de leer uno línea a la vez. Según su formato de entrada, puede utilizar un espacio como terminador, de modo que pueda ingresar solo una línea. Vea el ejemplo del somorgujo dorado para más detalles.

Por ejemplo, si todavía usa "\n" como terminador y solo ingresa una línea, pensará que el 444 no se leerá después de eso, pero este no es el caso. De hecho, después de leer 444, el flujo de entrada tiene un error de entrada. Para el primer getline(buf,4); el terminador predeterminado es '\n', la entrada es 444 111 9999. Al leer el cuarto carácter, es necesario determinar si es '\n'. la entrada termina; de lo contrario, se producirá un error en el flujo de entrada, causado por haber ingresado demasiado. La solución es: después de agregar input.clear();, borre el estado del flujo de entrada. Un ejemplo es el siguiente:

Leer correctamente. Para getline, ¡no puede entenderse simplemente como leer una línea a la vez!

Vuelva a explicar por qué agregar un espacio después de 444 es un error al leer en 3 entradas separadas.

Acabo de escribir 444a return 111 return y el programa decidió finalizar la entrada. Su primera línea get lee hasta 3 caracteres, determina el cuarto carácter y determina si la lectura termina correctamente. Si el cuarto carácter no es "\n", hay un error en el flujo de entrada, el flujo de entrada posterior no es válido y debe usar clear() para continuar. En la segunda línea get, el quinto carácter ingresado es "\n", por lo que termina normalmente y la cadena leída es a. Puede verificar esto generando los resultados de cada lectura:

La primera salida es 444, la segunda salida es a!