Maison > développement back-end > C++ > Pourquoi `getline()` ne fonctionne-t-il pas après avoir utilisé l'opérateur d'extraction de `cin` ?

Pourquoi `getline()` ne fonctionne-t-il pas après avoir utilisé l'opérateur d'extraction de `cin` ?

DDD
Libérer: 2024-11-11 15:51:02
original
206 Les gens l'ont consulté

Why Doesn't `getline()` Work After Using `cin`'s Extraction Operator?

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal