Maison >développement back-end >C++ >Quelle est la principale différence entre `std::cin` et `std::cin.getline()` en C ?
Comprendre les différences entre std::cin.getline() et std::cin
Lorsque vous travaillez avec des entrées et des sorties en C, il est crucial de comprendre les nuances entre std::cin.getline() et std::cin. Bien que les deux appartiennent à l'objet d'entrée standard std::cin, ils servent des objectifs distincts et gèrent les entrées différemment.
std::cin.getline()
Disséquons std::cin.getline(). L'espace de noms std:: héberge la vaste collection de types, de fonctions et d'objets de la bibliothèque standard. std::cin est l'un de ces objets représentant la saisie de caractères standard. Il propose des méthodes et des fonctions pour extraire des caractères d'une entrée standard.
std::cin.getline() est une méthode de std::cin qui récupère une ligne de caractères de l'objet à sa gauche (ici, std ::cin). Il continue de lire les caractères jusqu'à ce qu'il rencontre un caractère de nouvelle ligne (n), atteigne le nombre maximum de caractères spécifié ou manque d'entrée.
std::cin vs std::cin.getline( )
La principale différence entre std::cin et std::cin.getline() réside dans la façon dont ils gèrent les espaces et les nouvelles lignes caractères :
Exemple d'utilisation
Comprendre ces distinctions devient vital lorsque l'on travaille avec des chaînes et des entrées qui peuvent inclure des espaces ou des sauts de ligne. Par exemple :
string name; int age; // Read a single word from std::cin std::cin >> name; // Suppose John // Read the next line of input std::string line; std::getline(std::cin, line); // Suppose "is 25 years old" // Extract the age from the line age = std::stoi(line.substr(line.find("is") + 3, line.find("years") - 5)); // Extract "25"
Dans cet exemple, nous utilisons std::cin pour lire un seul mot (nom), puis utilisons std::cin.getline() pour lire la ligne suivante en entier. Notez que si nous avions utilisé std::cin pour lire la ligne contenant l'âge, il n'aurait extrait que "25" sans le texte qui l'entoure.
Conclusion
Comprendre la différence entre std::cin.getline() et std::cin est indispensable lorsqu'il s'agit d'une entrée comprenant des espaces ou des sauts de ligne. En comprenant leurs comportements distincts, les développeurs peuvent récupérer efficacement des parties spécifiques des entrées et éviter les ambiguïtés potentielles dans le traitement des données.
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!