Maison > développement back-end > C++ > Pourquoi `getline()` en C ignore-t-il parfois les entrées de l'utilisateur et comment puis-je y remédier ?

Pourquoi `getline()` en C ignore-t-il parfois les entrées de l'utilisateur et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-09 07:42:08
original
472 Les gens l'ont consulté

Why Does `getline()` in C   Sometimes Skip User Input, and How Can I Fix It?

getline() en C : gestion de la mémoire tampon de ligne

En C, getline() est utilisé pour lire l'entrée du flux d'entrée standard cin jusqu'à ce qu'un caractère de nouvelle ligne soit rencontré. Cependant, lorsqu'il est utilisé dans un programme où la saisie de l'utilisateur est demandée, il peut entraîner un comportement inattendu.

Considérez l'extrait de code suivant :

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
Copier après la connexion

Lorsque ce programme est exécuté, vous remarquerez peut-être qu'après avoir saisi le premier numéro, le programme vous demande immédiatement le numéro de compte sans attendre que vous saisissiez votre nom. En effet, getline() lit le caractère de nouvelle ligne restant dans le tampon d'entrée.

Pour éviter ce problème, vous pouvez utiliser std::ws (espace blanc) avant getline() pour ignorer tous les caractères d'espacement et de nouvelle ligne du flux d’entrée. Cela garantit que getline() lit l'entrée à partir du prochain caractère autre qu'un espace :

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin >> ws;
getline(cin, str);
...
Copier après la connexion

En incorporant cette étape, le programme vous demandera correctement votre nom avant de passer à l'entrée suivante.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal