Maison > développement back-end > C++ > Pourquoi ma fonction `getline()` n'accepte-t-elle pas les entrées de l'utilisateur en C ?

Pourquoi ma fonction `getline()` n'accepte-t-elle pas les entrées de l'utilisateur en C ?

DDD
Libérer: 2024-11-13 09:50:02
original
905 Les gens l'ont consulté

Why Is My `getline()` Function Not Accepting User Input in C  ?

Dépannage de getline() en C

Lorsque vous essayez d'utiliser la méthode getline() pour capturer les entrées de l'utilisateur, vous pouvez rencontrer un comportement inattendu où le programme s'arrête sans accepter les entrées .

Considérons l'exemple suivant :

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);
Copier après la connexion

Malgré la présence de la déclaration cout invitant l'utilisateur, le programme se terminera prématurément sans collecter les entrées.

Résolution

Le problème survient en raison de la nature du >> opérateur, qui laisse un caractère de nouvelle ligne dans le tampon d’entrée. Ce caractère est en conflit avec getline(), qui s'attend à ce que l'entrée se termine par une nouvelle ligne.

Pour atténuer ce problème, il est crucial de vider le caractère de nouvelle ligne du tampon. Ceci peut être réalisé en utilisant la méthode cin.ignore().

Le code corrigé devrait ressembler à ceci :

string messageVar;
cout << "Type your message: ";
cin.ignore();
getline(cin, messageVar);
Copier après la connexion

L'instruction cin.ignore() efface le caractère de nouvelle ligne du tampon , permettant à getline() de fonctionner correctement.

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