Utilisation de getline() en C : Dépannage des entrées utilisateur
Lorsque vous utilisez la méthode getline() pour récupérer les entrées utilisateur, il est crucial d'être conscient d’un écueil potentiel. Considérez le code suivant :
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Malgré la tentative d'obtenir la saisie de l'utilisateur, ce code se bloque indéfiniment, ne capturant jamais le message souhaité.
Cause du problème :
Le problème vient du fait que le cin >> L'opérateur laisse un caractère de nouvelle ligne n dans le tampon d'entrée. Cela devient problématique pour getline(), qui lit l'entrée jusqu'à rencontrer une nouvelle ligne. Par conséquent, getline() se termine prématurément sans qu'aucune entrée ne soit fournie.
Solution :
Pour résoudre ce problème, vous devez vider le caractère de nouvelle ligne du tampon d'entrée avant d'appeler getline(). Ceci peut être réalisé en utilisant cin.ignore() :
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
En ajoutant cin.ignore(), le caractère de nouvelle ligne laissé dans le tampon est supprimé, permettant à getline() de fonctionner comme prévu. Il attendra la saisie de l'utilisateur et capturera le message saisi lorsque la touche Entrée est enfoncée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!