Comprendre le comportement de getline()
La fonction getline() en C est utilisée pour lire les caractères de l'entrée standard jusqu'à ce qu'un caractère de nouvelle ligne soit rencontrés. Cependant, les développeurs peuvent rencontrer des problèmes inattendus lors de l'utilisation de getline() après l'opérateur d'extraction de cin (>>).
Description du problème
Les utilisateurs peuvent constater que leur code est ne pas s'arrêter pour recevoir les entrées de l'utilisateur lors de la tentative de capture des messages fournis par l'utilisateur à l'aide de getline(). La cause sous-jacente est liée au comportement de l'opérateur d'extraction cin.
Solution : vider le caractère de nouvelle ligne
Après avoir utilisé l'opérateur d'extraction cin pour lire les données, il laisse une nouvelle ligne caractère (n) dans le tampon d’entrée. Lorsque getline() est appelé immédiatement après, il tombe sur ce caractère de nouvelle ligne et arrête immédiatement la lecture.
Pour résoudre ce problème, il faut vider le caractère de nouvelle ligne du tampon avant d'invoquer getline(). Ceci peut être réalisé en utilisant cin.ignore() comme suit :
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
En insérant cin.ignore(), le caractère de nouvelle ligne est supprimé, permettant à getline() de lire l'entrée de l'utilisateur comme prévu. Cette technique garantit que l'opérateur cin et getline() fonctionnent successivement sans problème.
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!