>`, 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!