Maison >développement back-end >C++ >Pourquoi « getline » ne demande-t-il pas de saisie après avoir utilisé « >> » et comment puis-je y remédier ?

Pourquoi « getline » ne demande-t-il pas de saisie après avoir utilisé « >> » et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 10:07:08975parcourir

Why is `getline` not prompting for input after using `>>`, et comment puis-je y remédier ?
>`, et comment puis-je y remédier ? " />

Résoudre le problème d'entrée avec getline

Ce code utilise la fonction getline pour lire l'entrée après avoir utilisé l'opérateur>> pour d'autres entrées. Cependant, getline ne demande pas de saisie à l'utilisateur et utilise à la place la valeur initiale de 0 pour la variable de prix.

La raison de ce comportement est liée à Operator>> et getline. Operator>> est délimité par des espaces, ce qui signifie qu'il arrête de lire l'entrée lorsqu'il rencontre un caractère d'espacement (tel qu'un espace ou une nouvelle ligne). Lorsque vous utilisez Operator>> la touche Entrée pour soumettre leur entrée, en laissant le caractère de nouvelle ligne dans le tampon d'entrée.

Par la suite, lorsque getline est appelé, il est immédiatement trouve le caractère de nouvelle ligne dans le tampon et l'utilise pour terminer la saisie, avant même de donner à l'utilisateur la possibilité de saisir le prix réel. Pour résoudre ce problème, il existe deux approches :

1. ignore() ou un appel factice getline

Avant d'appeler getline, utilisez la fonction ignore() pour effacer le caractère de nouvelle ligne du tampon d'entrée. Alternativement, vous pouvez effectuer un appel factice à getline() pour supprimer la nouvelle ligne.

2. Utilisez getline exclusivement

Au lieu d'utiliser Operator>>, utilisez getline pour toutes les entrées et convertissez les chaînes acquises en types de données souhaités à l'aide de fonctions telles que stoi() pour les entiers et stod() pour les flottants . Cette approche garantit la sécurité et la robustesse des données.

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