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
Mary-Kate Olsenoriginal
2024-12-23 19:05:14466parcourir

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

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!

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