Maison > développement back-end > C++ > Comment lire des lignes entières d'entrée, y compris les espaces avec le « cin » de C ?

Comment lire des lignes entières d'entrée, y compris les espaces avec le « cin » de C ?

Patricia Arquette
Libérer: 2024-10-29 07:49:02
original
708 Les gens l'ont consulté

How to Read Entire Lines of Input Including Spaces with C  's `cin`?

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;
}
Copier après la connexion

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>
Copier après la connexion

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;
}
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal