J'ai un problème, mais je n'arrive pas à comprendre ce que je fais de mal. Je ne suis pas sûr si c'est un problème avec ma boucle, ou le tampon cin n'est pas nettoyé. Je fais un programme qui transforme une chaîne de style C en majuscule, cependant si l'utilisateur entre plus de 11 caractères, alors la fonction devrait seulement afficher les 11 premiers, et rien après cela ne devrait pas être affiché. Le problème est que si je entrer plus de 11 caractères, alors ma boucle ne s'arrête jamais et continue à dire à l'utilisateur que la réponse entrée est invalide et s'il aimerait entrer une nouvelle chaîne.Problème de boucle. Cin C++ getline clear buffer
Répondre
Le problème vient lorsque vous essayez d'effacer votre tampon. Lorsque vous revenez de cStringToUpper, il y a encore des caractères supplémentaires dans votre tampon, mais vous recherchez immédiatement y/q.
Vous donnez à la ligne cin.getline un tampon de 12 caractères de sorte que le nombre de caractères requis ne sera que de quelques caractères, le reste étant toujours dans le tampon. Si vous utilisez à la place
string str;
cin.getline(str)
Ensuite, vous obtiendrez la ligne entière, alors vous pouvez recadrer à 11 caractères. Pas 100% sur la cin-syntaxe mais vous avez l'idée.
Ou déplacer la partie au-dessus de ne pas tenir compte
cin >>cont;
d'ignorer les caractères supplémentaires de cette façon.
cin >> cont;
cout << "\n" << endl;
cin.ignore(200,'\n');
devrait être
cin.ignore(200,'\n');
cin >> cont;
cout << "\n" << endl;
Vous pouvez corriger votre programme en modifiant votre cStringToUpper fn. quelque chose comme:
...
int loopCount;
char buffer[256];
cin.getline(buffer,256);
strncpy(letters, buffer, 11);
//letters[11]= '\0';
cout << "\n" << endl;
...
- 1. Problème cin et buffer
- 2. Clear Console Buffer
- 3. C++ CIN saute aléatoirement
- 4. problème de l'utilisation cin deux fois
- 5. erreur C++ STD Cin dans while
- 6. fonctionnalité de cin en C++
- 7. C++ timeout sur getline
- 8. IE7 Clear Float Problème
- 9. C++ EOF Getline Erreur
- 10. manutention SIGINT et getline
- 11. des questions cin C++
- 12. getline en C++ - Besoin d'aide
- 13. Java équivalent de cin (C++)
- 14. Besoin d'aide avec getline()
- 15. Python équivalent de C++ getline()
- 16. C++ printf grand buffer
- 17. C++ à C#: cin à Console.Read
- 18. Producteur/Consommateur, Problème de buffer de flux
- 19. Les nombres de C++ cin ignorent la première ligne?
- 20. Lecture de parties d'une ligne (getline())
- 21. Comment déterminer si c'est EOF lors de l'utilisation de getline() en C++?
- 22. WPF TreeView Clear Selection
- 23. std :: getline() renvoie
- 24. C++: getline() ignorant les premiers caractères
- 25. Javascript clear
- 26. saute sur getline() sans prendre l'entrée d'utilisateur
- 27. format if/else dans la boucle while
- 28. Comment est-ce que je itère sur CIN ligne par ligne en C++?
- 29. Cache de l'assembly SharePoint-clear
- 30. Utilisation de plusieurs instances de getline en C++