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