Démêler l'énigme de cin.ignore() en C
Lors de l'interaction avec les utilisateurs dans les programmes C, des scénarios inattendus comme le saut d'entrées de chaîne peuvent surgir. L'appel apparemment inoffensif cin.ignore() détient la clé pour résoudre des problèmes aussi déroutants.
Pourquoi cin.ignore() est vital
Lorsque l'utilisateur saisit un numéro suivi d'une chaîne, appuyer sur la touche Entrée insère un caractère de nouvelle ligne (« n ») dans le tampon d'entrée. Par la suite, cin >> num; consomme le numéro mais laisse le caractère « n » dans le tampon. Lorsque cin.ignore() est absent, cin >> getline(cin, mystr); lit par inadvertance le caractère 'n' au lieu de la chaîne d'entrée.
La fonction cin.ignore() résout ce problème en ignorant un nombre spécifié de caractères (256 dans notre exemple) ou jusqu'à ce qu'elle rencontre un délimiteur (' n' dans ce cas).
Prédire le besoin de cin.ignore()
La prévision lorsque cin.ignore() est requise implique de comprendre le potentiel de caractères restants dans le tampon d'entrée. Les situations où cela devient essentiel incluent :
Exemple : Plonger dans le code
Considérez le programme C fourni :
#include <iostream> #include <string> using namespace std; int main() { double num; string mystr; cout << "Please enter a number: " << endl; cin >> num; cout << "Your number is: " << num << endl; cin.ignore(256, '\n'); // Ignore any remaining characters cout << "Please enter your name: \n"; getline (cin, mystr); cout << "So your name is " << mystr << "? \n"; cout << "Have a nice day. \n"; }
Insérer le cin.ignore() appeler après cin >> num; garantit que le caractère 'n' est ignoré, permettant ainsi au cin >> getline(cin, mystr); pour lire correctement la chaîne saisie.
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!