C "cin" ne lit que le premier mot
En C , l'opérateur de flux d'entrée >> lit généralement un seul mot à partir d’une source d’entrée telle que le clavier. Cela peut être problématique lorsque vous tentez de lire une chaîne contenant des espaces, car seul le premier mot sera capturé. Ce problème peut être rencontré lors de l'utilisation de tableaux de caractères.
Considérez le code suivant :
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin >> str; } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }
Lors de l'exécution de ce code dans Turbo C 4.5, seul le premier mot d'une chaîne est affiché. C'est parce que cin >> str ne lit qu'un seul mot dans le tableau de caractères str. Pour lire une ligne complète d'entrée, y compris les espaces, une autre approche est requise.
Une option consiste à utiliser la fonction getline() :
<code class="c++">#include <iostream> #include <string> using namespace std; int main() { string s; cout << "Enter string :"; getline(cin, s); cout << s; return 0; }</code>
Ce code lira la ligne entière d'entrée, y compris les espaces, dans la chaîne s. getline() peut également être utilisé pour lire des tableaux de caractères :
<code class="c++">#include <iostream.h> #include <conio.h> int main() { char str[100]; cout << "Enter string :"; cin.getline(str, sizeof str); cout << str; return 0; }
Alternativement, si vous préférez utiliser le >> opérateur, vous pouvez modifier le code comme suit :
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin.getline(str, sizeof str); } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }</code>
Avec ces modifications, le code lira et affichera correctement l'intégralité de la chaîne de saisie.
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!