Ayuda con error de cin.getline

Iniciado por Black cracker, 16 Agosto 2015, 08:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Black cracker

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:

CitarError 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

ivancea96

#1
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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
cin.ignore();
para sacar del buffer el salto de linea.