Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Black cracker en 16 Agosto 2015, 08:55 am



Título: Ayuda con error de cin.getline
Publicado por: Black cracker en 16 Agosto 2015, 08:55 am
Hola gente. Se me ha presentado el error de los getline.. He estado buscando en linea cual ha de ser el posible error pero nada. Bueno, este es el error que me tira:

Citar
Error C2664: 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::getline(_Elem *,std::streamsize,_Elem)'

Me marca el punto en rojo del "cin.getline();"

El comando de getline(cin, inventario[cont].localidad); no me da error, pero como que no lo lee dado que se lo salta o no pide dato.

Aca el codigo:
Citar
void agregar(vehiculo inventario[], int &cont){

   cout << "Digite la placa del vehiculo: ";
   cin >> inventario[cont].placa;
   cout << " " << endl;

   cout << "Digite la localiacion general del vehiculo: ";
   
   //getline(cin, inventario[cont].localidad);
   cin.getline(inventario[cont].localidad,100);
   //cin >> inventario[cont].localidad;
   cout << " " << endl;
   

Gracias de antemano..  ;-);-) ;D


Título: Re: Ayuda con error de cin.getline
Publicado por: ivancea96 en 16 Agosto 2015, 13:13 pm
Y ".localidad" es...? Un string?

Si es un string, usa la primera forma.
Si es un char*, usa la segunda.

Si dices que la primera forma no te la lee, es porque has puesto:
Código
  1. cin >> inventario[cont].placa;
antes. "cin<<" lee, pero deja en el buffer de entrada el salto de linea. Así que getline lee ese salto de linea.

Antes del getline(cin, string), pon
Código
  1. cin.ignore();
para sacar del buffer el salto de linea.