Maison > Article > développement back-end > Pourquoi ma fonction `getline()` n'accepte-t-elle pas les entrées de l'utilisateur en C ?
Lorsque vous essayez d'utiliser la méthode getline() pour capturer les entrées de l'utilisateur, vous pouvez rencontrer un comportement inattendu où le programme s'arrête sans accepter les entrées .
Considérons l'exemple suivant :
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
Malgré la présence de la déclaration cout invitant l'utilisateur, le programme se terminera prématurément sans collecter les entrées.
Le problème survient en raison de la nature du >> opérateur, qui laisse un caractère de nouvelle ligne dans le tampon d’entrée. Ce caractère est en conflit avec getline(), qui s'attend à ce que l'entrée se termine par une nouvelle ligne.
Pour atténuer ce problème, il est crucial de vider le caractère de nouvelle ligne du tampon. Ceci peut être réalisé en utilisant la méthode cin.ignore().
Le code corrigé devrait ressembler à ceci :
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
L'instruction cin.ignore() efface le caractère de nouvelle ligne du tampon , permettant à getline() de fonctionner correctement.
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!