RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  37826 - PROBLEMA CON CIN
Autor:  M JS
Hola:
Quisiera saber si alguien me puede explicar porque funciona lo siguiente

Para evitar el problema de pisar memoria cuando leo una cadena con el cin, por ejemplo cin>> nombre utilizo cin.getline(nombre,20), esto corta la entrada a memoria cuando tengo 19 caracteres tipeados. Pero si se trata de ingresar mas de 19 caracteres y luego hay otra lectura de una cadena o de un numero por ejemplo
cin>> edad o cin.getline(apellido,20), en cualquiera de los dos casos sucede lo mismo levanta los caracteres pendientes en el caso de la cadena o el enter en el caso del numero y me saltea la lectura, buscando en el help encontre el metodo cin.clear() con el que crei que lo hiba a solucionar pero es como si no hiciera nada, segui buscando y encontre otro metodo el cin.tellg(). Ahora bien segun el help de borland lo unico que hace este metodo es devolver la longitud del flujo de entrada. Alguien me puede explicar porque funciona o que es exactamente lo que hace este metodo. Y si hay otra forma de hacerlo.
Por favor no me contesten que con el flush, ya que no quiero usar la biblioteca stdio. Estoy tratando de usar solo cosas de C++.

El codigo quedaria:
cout <<"Ingrese Nombre"; cin.getline(Nombre,20); cin.tellg();
cout<<"Ingrese Apellido"; cin.getline(Apellido,20); cin.tellg();
cout<<"Ingrese Edad"; cin>>Edad;

Desde ya muchas gracias.


Nombre
Apellidos
Correo
Comentarios