Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/09/2008, 14:55
valencia1984
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Ayuda!! Clases con cin.getline!!

Cita:
Iniciado por TheJez Ver Mensaje
Hola gracias por revisar mi post, me surge un problema cuando trato de usar cin.getline con variables encapsuladas en una clase el cual no me explico... trabajo con dev-c++, mi codigo es el siguiente:

Código:
#include <iostream>
using namespace std;
struct lugares { 
             int lugar;
             char nombre[30];
             char domicilio[30];
 };
int main(void) {
    lugares objeto[10];
    string continuar="si";
    int opcion;
    while(continuar == "si" || continuar == "SI"){
    system("cls");
    cout << "Selecciona una opcion!!\n";
    cout << "\n";
    cout << "1) Asignar todos los registros\n";
    cout << "2) Modificar\n";
    cout << "3) Eliminar\n";
    cout << "4) Ordenar\n";
    cout << "5) Buscar\n";
    cout << "6) Ver Datos\n";
    cin >> opcion;
 
 if(opcion == 1) {
 for (int i=0; i<10; i++){
 objeto[i].lugar = i+1;
 cout << "Nombre: \n";
 cin.getline(objeto[i].nombre,30);
 cout << "Domicilio: \n";
 cin.getline(objeto[i].domicilio,30);
 cout << "Anadido!!\n";
        }
 cout << "Continuar? Si, No\n";
 cin >> continuar;
              
}
    system("pause");
    
}
al ejecutarlo, y ponerle la opcion 1, en el primer aumento del for no me pide el contenido de la variable objeto[0].nombre no pone nada y se sigue con objeto[0].domicilio sencillamente me pone en pantalla

Nombre:
Domicilio:
_(aqui me pide el valor de domicilio, el de nombre se lo salta)

y de ahi en adelante funciona todo bien, en los demas aumentos del for si me pide el valor de nombre y no me explico por que sera espero alguien pueda saber donde esta el error y me heche una mano
Se que ha pasado mucho tiempo, pero al igual que accedido por google , podría pasarle a otra persona y confundirle..

Yo creo que la solución del clear no es correcta.
Utilizar el cin y el cin.getline en un mismo módulo no es una idea.
O utilizas cin sólamente o el cin.getline.

Esto es así, porque getline lee hasta encontrar un \n, con lo que lee una cadena vacía.