Ce qui suit est mon code, que je veux lire les caractères de stdin, et se termine quand il rencontre un EOF (ctrl-z) .C + + utilise cin.get pour obtenir un caractère, mais ne termine pas la boucle while lorsque vous rencontrez l'EOF
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
string article ;
char nextChar;
while(cin.get(nextChar)) {
if(cin.eof()) break ;
article.append(1, nextChar) ;
}
cout << article ;
system("pause") ;
}
Je test comme une entrée ceci:
I am a student.<ctrl-z>
Et puis je puis appuyez sur Entrée, mais il n'arrête pas.
Lorsque je tape un autre [Ctrl-z], puis appuyez sur neter.
Il peut juste sortir de la boucle while.
Pourquoi le premier [ctrl-z] à ne pas signaler la condition eof?
Essayez 'Ctrl-D' pour' EOF'. ('Ctrl-Z' est souvent" pause le processus "). – Galik
@Galik: C'est très spécifique à l'environnement. ASCII 26 est un marqueur EOF, mais les terminaux sur les systèmes d'exploitation autres que Windows ne génèrent généralement pas d'ASCII 26 lorsque vous appuyez sur Ctrl + Z. –