Je suis un peu confus quant à ce qui se passe, je joue avec certains programmes de “C ++ accéléré” et rencontre un problème avec l’un des premiers programmes (page 35, si vous en avez une copie à proximité).
Il utilise cet extrait:
while (cin >> x) { ++count; sum += x; }
(“count” est un entier, “x” est un double)
Cela fonctionne comme prévu, ce qui me permet de saisir plusieurs valeurs et de les additionner, mais je ne peux pas comprendre ce qui ne va pas avec la signalisation “Fin de fichier”. Le livre indique que la boucle continuera à s’exécuter jusqu’à ce que le programme rencontre un signal de fin de fichier, ctrl + z dans Windows.
Tout va bien et fonctionne, mais mon programme ne me laissera plus utiliser Cin. Habituellement, je viens de configurer un programme pour attendre une variable aléatoire afin d’arrêter la fermeture de la console immédiatement après son exécution (existe-t-il un meilleur moyen de le faire, au fait?) Et c’est ainsi que j’ai remarqué cela, et je me demandais s’il y a une solution. J’ai fait beaucoup de recherches, mais je n’ai trouvé que peu d’éléments qui ne disent pas ce qui est déjà dit dans le livre (appuyez sur ctrl + z, ou entrez un type d’entrée non compatible, etc.)
J’utilise Visual Studio 2008 Express pour comstackr.
D’un certain sharepoint vue, une fois que vous avez atteint la fin d’un stream d’entrée, il ne rest par définition plus rien dans le stream. Il n’est donc pas logique d’essayer de le relire.
Cependant, dans le cas où la fin du stream est causée par un caractère spécial comme Ctrl-Z sous Windows, nous soaps qu’il est possible que nous puissions relire cin
. Cependant, la lecture ayant échoué aura pour effet de définir l’indicateur eof
sur le stream.
Pour effacer cet indicateur (et tous les autres indicateurs d’échec), vous pouvez utiliser la méthode clear
.
std::cin.clear();
Après avoir appelé cela, vous pouvez tenter une autre lecture.
EOF signifie que STDIN
(autrement appelé cin
) a été fermé. Fermé signifie qu’il ne peut plus être utilisé.
Cela dit, je pense qu’il est possible d’ouvrir un autre stream vers l’entrée, mais la solution meilleure et plus normale consiste à effectuer un meilleur traitement des entrées / sorties et à permettre à votre utilisateur de saisir un jeton indiquant «Arrêtez d’accepter des entrées».
On dirait que vous utilisez Windows (sinon vous seriez sur la console et la fenêtre ne se fermerait pas). Vous avez deux options.