Entrada de cadenas de caracteres

El operador >> sobre cin está pensado para aceptar valores separados por espacios. Entonces, ¿como se lee una cadena de tipo string que contenga espacios en blanco? Invocando a la función getline:

istream& getline(istream& is, string& str);

Esta función lee caracteres de la entrada estándar (representada por cin) hasta que encuentre el carácter \n que se introduce al pulsar la tecla Entrar, incluido éste carácter. El hecho de que lea también el carácter \n puede presentar un problema cuando antes se haya leído otro dato de un tipo primitivo. Por ejemplo:

entrada_cadena_listado_1En este ejemplo, getline lee el carácter \n que se introduce al pulsar la tecla Entrar después de introducir el valor real, asumiendo que esta es la cadena que queríamos leer (se trata de una cadena vacía), con lo que el usuario no podrá introducir la cadena solicitada.

entrada_cadena_salida_1

La solución es eliminar ese carácter \n sobrante antes de que sea solicitada la entrada de la cadena de caracteres:

entrada_cadena_listado_2

entrada_8_listado_2

atras2

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s