Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-11-13 09:50:02834parcourir

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);

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);

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!

Déclaration:
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