Maison > Article > développement back-end > Pourquoi \"cin\" ne lit-il que le premier mot en C ?
"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!