Grupo de C++
Publico Grupo
Publico Grupo
Active a day
Este grupo esta relacionado con nuestro curso profesional de C++. Aquí se comparten temas... View more
Publico Grupo
Responder a: Problema con cin y getline en C++ (salta entrada)
El problema que estás experimentando en tu código tiene que ver con la manera en que cin y getline manejan el buffer de entrada. Cuando usas cin para leer un número (cin >> numeroEmpleado[i];), deja un carácter de nueva línea (‘\n’) en el buffer que no es consumido. Cuando luego llamas a getline, esta función intenta leer desde ese buffer y encuentra el carácter ‘\n’, lo que provoca que se salte la entrada de la cadena.
Para evitar este comportamiento, puedes limpiar el buffer de entrada antes de llamar a getline. Esto se hace utilizando cin.ignore(), que descarta cualquier carácter sobrante en el buffer.
Ejemplo:
for(int i=0; i<3; i++){
cout << "Digita el numero del empleado que deseas registrar: ";
cin >> numeroEmpleado[i];
// Limpiar el buffer antes de usar getline
cin.ignore();
cout << "Ingresa el primer nombre del empleado No. " << numeroEmpleado[i] << ": ";
cin.getline(nombre, 15, '\n');
nombreEmpleado[i] = nombre;
cout << endl;
}
Explicación:
cin.ignore();: Esto descarta el carácter ‘\n’ que queda en el buffer después de la entrada con cin. De este modo, getline funcionará correctamente y permitirá al usuario ingresar el nombre del empleado.
Intenta hacer estos ajustes y el problema debería resolverse, permitiéndote ingresar tanto el número como el nombre sin que se salte ninguna entrada.