Maison  >  Article  >  développement back-end  >  Pourquoi \"cin\" ne lit-il que le premier mot en C ?

Pourquoi \"cin\" ne lit-il que le premier mot en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 16:19:03723parcourir

Why Does

"cin" ne lit que le premier mot en C : clarifications et solutions

Dans l'extrait de code fourni, l'opérateur de flux cin est utilisé pour lire l'entrée dans le tableau de caractères str. Cependant, il ne lit que le premier mot de l'entrée, ce qui entraîne une récupération de chaîne incomplète.

Pourquoi cin se comporte de cette façon

Par défaut, cin lit les caractères séquentiellement et délimite saisie basée sur des caractères d'espacement (par exemple, des espaces, des tabulations). Lorsqu'il rencontre un caractère d'espacement, il considère que la séquence d'entrée est terminée et passe à l'entrée suivante.

Solution 1 : cin.getline() pour les tableaux de caractères

Pour lisez une ligne entière d’entrée, nous pouvons utiliser la fonction cin.getline() au lieu de cin. Il faut deux paramètres : le tableau de caractères à lire et la taille du tableau pour garantir qu'un débordement de tampon ne se produise pas.

<code class="c++">char str[100];
cin.getline(str, sizeof str);</code>

Solution 2 : getline() pour std::string

Si vous utilisez C 11 ou une version ultérieure, vous pouvez exploiter le type std::string et utiliser la fonction getline() :

<code class="c++">std::string str;
std::getline(cin, str);</code>

Recommandation du compilateur moderne

Il est fortement recommandé de passer de Turbo C 4.5 à un compilateur plus moderne. Visual Studio Express est une option gratuite pour Windows qui offre une prise en charge linguistique et des fonctionnalités amélioré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