Maison >développement back-end >C++ >Quelle est la principale différence entre `std::cin` et `std::cin.getline()` en C ?

Quelle est la principale différence entre `std::cin` et `std::cin.getline()` en C ?

DDD
DDDoriginal
2024-12-08 04:36:13223parcourir

What's the Key Difference Between `std::cin` and `std::cin.getline()` in 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 :

  • std::cin: Par défaut, std::cin ignore les espaces de début (espaces, tabulations, etc.) et arrête la lecture au premier caractère d'espacement qu'il rencontre .
  • std::cin.getline(): En revanche, std::cin.getline() lit et inclut tous les caractères jusqu'à ce qu'un caractère de nouvelle ligne (n) soit rencontré. Cela signifie qu'il lit efficacement des lignes entières de texte, y compris les caractères d'espacement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn