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.

0voto

Nickolas Points 388

Je suppose que vous voulez sauter à la fin du dossier. Vous pouvez obtenir la valeur de basic_ios::eof il retourne vrai à la fin du flux.

0voto

mostafiz Points 429

Prendre l'entrée d'un fichier. Vous constaterez alors que la boucle while se termine lorsque votre programme cesse de recevoir des données. En fait, cin arrête de prendre des données lorsqu'il trouve un marqueur EOF. Chaque fichier d'entrée se termine par ce marqueur EOF. Lorsque ce marqueur EOF est rencontré par operator>> il modifie la valeur du drapeau interne eofbit en faux et par conséquent la boucle while s'arrête.

0voto

Eldar Points 11

Cela m'aide à terminer la boucle en appuyant sur ENTER.

int main() {
    string word;
    while(getline(cin,word) && s.compare("\0") != 0) {
        //do sth on the input word
    }

    // perform some other operations
}

0voto

Serid Points 307

Vous pouvez faire une vérification pour un mot spécial en entrée. Par exemple, "stop" :

int main( ){
   string word;

   while (cin >> word){
      if(word == "stop")
          break;

      //do sth on the input word
   }

// perform some other operations
}

0voto

Lichard Points 41

Vous pouvez essayer ceci

    string word;
    vector<string> words;
    while (cin >> word) {

        words.push_back(word);
        if (cin.get() == '\n')
            break;
    }

de cette façon, vous n'avez pas besoin de terminer avec CTRL+D(Z). Le programme s'arrêtera pendant la fin de la phrase.

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