getline ne demande pas de saisie : un cas de problèmes de tampon
Lors de l'utilisation de getline(cin, mystr) en C , vous pouvez rencontrer un problème où il ne demande pas de saisie à l'utilisateur et attribue à la place la valeur initiale de "0" à la variable de prix. En effet, getline lit l'entrée jusqu'à ce qu'elle rencontre un caractère de nouvelle ligne (« n »), et il peut y avoir un caractère de nouvelle ligne persistant dans le tampon d'entrée.
Le problème survient lors du mélange d'opérateurs de flux d'entrée tels que >> avec getline. Lorsque vous utilisez cin >> i pour lire un entier, la saisie de l'utilisateur est suivie d'un caractère de nouvelle ligne. Cependant, cette nouvelle ligne reste dans le tampon d'entrée. Lorsque vous appelez ensuite getline, il interprète le caractère de nouvelle ligne comme entrée, sans inviter l'utilisateur.
Solutions possibles :
cin.ignore(); getline(cin, mystr);
int getInt() { string input; getline(cin, input); return stoi(input); }
Pratique recommandée :
Il est recommandé d'utiliser getline pour toutes les entrées, en garantissant que les caractères de nouvelle ligne sont gérés correctement et la saisie est toujours demandée. Évitez de mélanger >> avec getline pour éviter ces problèmes de tampon.
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!