5 min de lectura

En programación existen diferentes métodos para cin, como get, getline e ignore. A continuación se explica cada uno de ellos.

Como leer en C++ con cin incluyendo espacios con el método get

En C++ es posible leer datos separados por espacios en blanco o intro, por medio del operador de extracción sobre cin (>>). Más si se quieren leer caracteres, incluyendo los espacios en blanco o intro, se utiliza el método de get. Get extrae un caracter de cin y lo guarda en la variable. Si se extrae y es el fin del fichero, se activa el indicador de fin de fichero. Si el buffer de entrada se encuentra vacío, cuando el programa llega a la instrucción, se detiene en espera de teclear un caracter y pulsar intro.

cin.get (caracter) ;

*García Enrique H. (2014). “Leer caracteres y cadenas de caracteres en C++”, en Programación C++. Disponible en: http://ejercicioscpp.blogspot.mx/2013/07/c-leer-caracteres-cadenas-de-caracteres.html (22/02/16).

SALIDA DEL PROGRAMA:

Introduce un numero entero: 20

El numero es par

Introduce un caracter: El caracter no es una letra minuscula

Presione una tecla para continuar . . .

 

El intro también se extrae del flujo de caracteres.

Al tener un flujo de entrada cin (18\n), por medio de la instrucción cin >> num; se le asigna a num el valor 18. El valor se extrae de cin pero permanece el \n, por lo que se tiene un flujo de entrada después de leer el entero: \n.

Cuando se llega a cin.get(c); se extrae de cin el intro y se asigna a c. Esto causa que no se detenga la ejecución del programa para introducir el caracter, por lo que se produce un resultado no deseado.

Ahora es necesario limpiar el buffer con el método de ignore.

Como limpiar el buffer con ignore

*García Enrique H. (2014). “Leer caracteres y cadenas de caracteres en C++”, en Programación C++. Disponible en: http://ejercicioscpp.blogspot.mx/2013/07/c-leer-caracteres-cadenas-de-caracteres.html (22/02/16).

Como leer en C++ con cin incluyendo espacios con el método getline

El operador de extracción sobre cin no sirve para leer cadenas de caracteres con espacios en blanco.  Para esto se utiliza el método getline.

cin.getline(cadena, número, caracter final)

Getline lee la serie de caracteres desde el flujo de entrada y los guarda en la variable cadena. Se leen hasta el final del flujo, hasta el primer caracter que coincide con el caracter final que se haya especificado.  Getline añade el caracter nulo al final de la cadena de manera automática.

El siguiente programa muestra la diferencia al leer cadenas de caracteres con y sin el método de getline:


*García Enrique H. (2014). “Leer caracteres y cadenas en C++”, en Programación C++. Disponible en: http://ejercicioscpp.blogspot.mx/2013/07/c-leer-caracteres-cadenas-de-caracteres.html /22/02/2016).

SALIDA DEL PROGRAMA:

Introduce nombre y apellidos: Emilio Perez Ochoa

Hola Emilio Perez Ochoa

Introduce nombre y apellidos: Emilio Perez Ochoa

Hola Emilio

Presione una tecla para continuar . . .

 

Fuente (s):

*García Enrique H. (2014). “Leer caracteres y cadenas de caracteres en C++”, en Programación C++. Disponible en: http://ejercicioscpp.blogspot.mx/2013/07/c-leer-caracteres-cadenas-de-caracteres.html (22/02/2016).

2 COMENTARIOS

  1. Hola, estoy haciendo un programa en c++ de subneteo para un trabajo de la escuela, como puedo hacer para cuando ingrese el ip (ej 192.168.1.0) pueda ingresar el “.” por que no me deja, si lo ingreso me salta hasta el final del programa.
    para esto también me sirve el get?
    desde ya muchas gracias espero su respuesta

Deja tus comentarios

This site uses Akismet to reduce spam. Learn how your comment data is processed.