Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema manejo de String C++

Estas en el tema de Problema manejo de String C++ en el foro de C/C++ en Foros del Web. Buenas noches gente, tengo un problema urgente y necesitaria que me den una mano. Cada vez que leo un string, por ejemplo : Código: for ...
  #1 (permalink)  
Antiguo 31/05/2012, 15:24
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Problema manejo de String C++

Buenas noches gente, tengo un problema urgente y necesitaria que me den una mano. Cada vez que leo un string, por ejemplo :
Código:
	
for (i=0;i<n;i++)
	{
	cout<<"\nIngrese código de la máquina: ";
	cin>>cCod[i];
	cout<<"\nIngrese la denominación de la máquina: ";
	cin.getline(sDenominacion[i], 30);
	cout<<"\nIngrese las horas que estuvo parada la máquina: ";
	cin>>iHrs[i];
	}
Cuando ingreso el codigo, y luego la denominacion en la proxima vuelta cuando ingreso el codigo, me salta directamente a las horas. Me lo hace siempre y ya estoy loco porque no se que es. No uso el fflush porque en mi IDE es anjuta corriendo en linux, por ende ese comando no me lo deja. Porfavor demen una mano que rindo pronto y no se como solucionarlo. Muchas graciaaaaaas.
  #2 (permalink)  
Antiguo 31/05/2012, 15:55
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema manejo de String C++

Código C++:
Ver original
  1. for (i=0;i<n;i++)
  2.     {
  3.     cout<<"\nIngrese código de la máquina: ";
  4.     cin>>cCod[i];
  5.         while(getchar() != '\n' ) ;
  6.     cout<<"\nIngrese la denominación de la máquina: ";
  7.     cin.getline(sDenominacion[i], 30);
  8.     cout<<"\nIngrese las horas que estuvo parada la máquina: ";
  9.     cin>>iHrs[i];
  10.     }

La clave esta en usar esto:
while(getchar() != '\n' ) ;

Eso hace que limpies el buffer antes de leer. El problema que tenes es que para leer el codigo presionas enter. Al precionar enter este deja un \n en el buffer. Pero no es consumido cuando lees el codigo . Asi que el getline lo encuentra
y da la sensacion de saltearlo

Etiquetas: anjuta, c++, char, linux, programacion, string, caracteres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:58.