[C con Clase] Ingreso de datos cin

luis alfonso jimenez mejia viejolajimenez en gmail.com
Mar Nov 22 14:52:07 CET 2011


sencillo  utiliza   la funcion gets("");

El 22 de noviembre de 2011 05:25, Steven Davidson <srd4121 en njit.edu>escribió:

> Hola Luis,
>
> 2011/11/22 Luis Gutierrez Gomez <gutierrezgl en hotmail.com>:
> >
> >
> > Hola a todos, y agradeciendo de antemano sus consejos.
> >
> > Tengo el siguiente problema. Este programa lo que debe hacer es
> inicialmente solicitarme 10
> >
> > nombres de personas y sus telefonos. Llenados esos datos, me mostrará un
> menú donde puede elegir:
> >
> > a) saber el telefono de una persona ingresando su nombre.
> >
> > b) saber el nombre de una persona ingresando su telefono. Y
> >
> > c) salir del programa.
> >
> >
> >
> > El programita aparentemente funcionaba bien, ya que para todas las
> pruebas, solo le ingresaba
> >
> > un nombre solo ( sin apellido ) y su numero telefonico, de los diez
> datos que me pedia , bueno en realidad
> >
> > lo probaba con tres datos. Bueno el hecho es que si funcionaba bien.
> Pero ya al final de las pruebas
> >
> > lo quise probar con datos mas reales que ingresaba, que constaban de un
> nombre y apellido (separado ´por un tab(barra
> >
> > espaciadora) ), pero
> >
> > al dar "enter", la aplicación se salta al siguiente "nombre", osea ya no
> me pide el telefono del primer dato ingresado.
> >
> > Esto lo he observado que pasa cada vez que uso el "tab" separando nombre
> de apellido al ingresar el dato "nombre"; ya que cuando
> >
> > ingreso el mismo nombre y apellido corrido (sin "tab")el programa si me
> pide el telefono respectivo, osea ya
> >
> > no se salta, y el programa funciona bien.
> >
>
> Esto se debe al comportamiento de 'cin >>' cuando lee caracteres. Se
> detiene al leer un espacio blanco: ' ' (espacio), '\t' (tabulador),
> '\r' (retorno de carro). '\n' (nueva línea), '\v' (tabulador
> vertical), y '\f' (avance de página).
>
> La solución es usar la función miembro 'getline()' que lees y extrae
> todos los caracteres hasta que una de las siguientes tres condiciones
> suceda:
> 1. Se lee una cantidad de N-1 caracteres indicada por el usuario como N,
> 2. Se lee hasta el carácter separador, que por defecto es '\n', o
> 3. Se lee hasta el carácter de fin-de-fichero (EOF).
>
> En cualquier caso, siempre se agrega el carácter nulo al final de la
> cadena. Por ejemplo,
>
> char szNombreCompleto[1024]="";
>
> cin.getline( szNombreCompleto, 1024 );
>
>
> Puedes consultar la referencia en el apéndice E de nuestro curso de C++:
> - http://c.conclase.net/curso/index.php?cap=904c#APD_istream
> - http://c.conclase.net/curso/index.php?cap=904f#APD_funcionescin
>
>
> Espero haber aclarado la duda.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111122/7eb611c6/attachment.html>


Más información sobre la lista de distribución Cconclase