Maison >développement back-end >C++ >Pourquoi getline() se comporte-t-il de manière inattendue dans une boucle après avoir utilisé « >> » ?
>` ? " />
getline() et entrée console en C
En C , la fonction getline() est utilisée pour extraire une ligne de texte d'un flux, généralement la console. Cependant, lorsqu'elle est utilisée plusieurs fois en boucle, elle peut se comporter de manière inattendue.
Problème :
Lors de la tentative. pour collecter les entrées de l'utilisateur à l'aide de getline() pour les chaînes et >> pour les entiers et les doubles, l'utilisateur ne peut pas saisir la première chaîne. Au lieu de cela, le curseur de la console passe à l'invite de saisie suivante après le deuxième appel getline().
Explication :
Le problème vient du mélange des opérateurs getline() et >> >> ignore les espaces de début et lit l'entrée jusqu'à ce qu'elle atteigne un caractère autre qu'un espace. Cependant, il laisse un caractère de nouvelle ligne (n) dans le flux d'entrée.
Lorsque getline() est appelé après >> ;, il lit le caractère de nouvelle ligne comme une chaîne vide, ce qui entraîne le résultat indésirable comportement.
Solution :
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!