14 votes

Comment signifier qu'il n'y a plus d'entrée pour la chaîne ss dans la boucle while (cin >> ss)

J'ai utilisé "cin" pour lire les mots du flux d'entrée, qui ressemble à

int main( ){
     string word;
     while (cin >> word){
         //do sth on the input word
     }

    // perform some other operations
}

La structure du code est quelque chose comme celle ci-dessus. Il est compilable. Pendant l'exécution, je continue à entrer quelque chose comme

aa bb cc dd

Ma question est la suivante : comment terminer cette entrée ? En d'autres termes, supposons que le fichier texte soit simplement "aa bb cc dd". Mais je ne sais pas comment faire savoir au programme que le fichier se termine.

-1voto

Raindrop7 Points 3443

Votre programme ne prend pas en compte les espaces blancs. faites la différence entre cin et getline...

Voici un exemple avec une astuce : le programme reçoit les entrées et imprime la sortie jusqu'à ce que vous appuyiez deux fois sur Entrée pour quitter :

#include <iostream>
#include <string>
using namespace std;

int main(){

    char c = '\0';
    string word;
    int nReturn = 0;

    cout << "Hit Enter twice to quit\n\n";

    while (cin.peek())
    {
        cin.get(c);

        if(nReturn > 1)
            break;
        if('\n' == c)
            nReturn++;
        else
            nReturn = 0;
        word += c;
        cout << word;
        word = "";
    }

    cout << endl;
    return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X