Maison > développement back-end > C++ > Pourquoi `getline()` renvoie-t-il une chaîne vide après la saisie d'un numéro ?

Pourquoi `getline()` renvoie-t-il une chaîne vide après la saisie d'un numéro ?

Mary-Kate Olsen
Libérer: 2024-12-23 19:05:14
original
504 Les gens l'ont consulté

Why Does `getline()` Return an Empty String After Number Input?

Problèmes d'entrée getline() [Duplicate]

Lors de l'utilisation de getline() pour récupérer l'entrée utilisateur pour une variable de chaîne (str), c'est il est important d'être conscient du comportement des caractères de nouvelle ligne. Après avoir récupéré une valeur numérique, un caractère de nouvelle ligne reste dans le tampon d'entrée. Cela peut entraîner le retour immédiat des appels getline() suivants avec une chaîne vide.

Dans le code fourni, la nouvelle ligne après la saisie du numéro n'est pas consommée, et getline(cin, str) doit revenir immédiatement avec un vide. string.

Solution :

Pour ignorer le caractère de nouvelle ligne et garantir le bon comportement de getline(), utilisez le ws (espaces) manipulateur :

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);
Copier après la connexion

L'instruction cin.ignore() lit et supprime tous les caractères restants dans le tampon d'entrée jusqu'à la nouvelle ligne suivante, consommant efficacement la nouvelle ligne.

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