> Tous les forums > Forum Autres langages
 Tester si "cin" est vide
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Dgueul
  Posté le 04/04/2009 @ 00:32 
Aller en bas de la page 
Petit astucien

Bonsoir,

J'aimerais pouvoir tester si le buffer de mon "cin" est vide (ou plein)...

Par exemple, pour faire simple, imaginons un bout de code qui demande de taper une phrase.

Le programme va ensuite afficher chaque mots les un en dessous des autres!

En utilisant le fait que le cin ne restitue pas ce qui se trouve derrière un espace, on va pouvoir diviser "mécaniquement" la phrase mot par mot.

Voici le bout code suivant:


string phr;
cout << "rentre une phrase : ";
do
{
cin >> phr;
cout << phr << endl;
}while (.......);//test si il reste quelque chose dans le cin...

  1. le programe demande de rentrer une phrase (cout).
  2. rentre dans le "do-while".
  3. l'utilisateur rentre une phrase.
  4. le programme affiche le premier mot de la phrase (il ne s'occupe pas de ce qu'il y a derrière le premier espace).
  5. le programme test si le buffer du cin est vide, si il n'est pas vide, il remonte au do.
  6. le programme met le mot suivant dans la variable phr, puisque le buffer n'est pas vide!
  7. le programme affiche phr
  8. retour à l'étape 5.

Mon problème, c'est que je n'arrive pas à tester si le buffer est vide ou pas...

j'ai testé : cin.eof() cin.fail() cin.good() cin.bad() etc.... rien ne semble fonctionner...

Merci d'avance à celui qui saura m'apporter la solution!

PS: je ne veux rajouter aucun autre test, ni aucune autre varriable, mon but est vraiment de tester si le cin est vide! En faite, la solution que je cherche, c'est juste quelque chose à mettre dans ce while! Je sais très bien qu'il y a mille autre façon de faire ce programme, mais c'est ce test qui m'interesse.

Publicité
don diego
 Posté le 05/04/2009 à 12:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

Primo-> Quel est le langage?
Deuxio -> Si l'utilisateur ne rentre pas de mot la première fois, ça ne te pose pas de problème? En sachant que tu rentreras dans ta boucle.

Dgueul
 Posté le 05/04/2009 à 23:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

langage: C++ (c'est coché en haut)

avec le do-while l'utilisateur est obligé de rentrer une première fois dans la boucle, et ensuite, il est bloqué sur le cin tant qu'il ne tape pas quelque chose de "valide" (le cin n'accepte pas un flux vide, ni un flux ne comportant qu'un espace ou qu'un retour chariot).

Anonyme
 Posté le 30/11/2009 à 11:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Bonjour,

La réponse arrive un peu tard, mais mieux vaut tard que jamais...

Lorsque cin (entrée standard) est le terminal, il faut que l'utilisateur tape Ctrl+D lorsqu'il a fini d'écrire et dans ce cas cin.good et cin.eof devraient fonctionner.

Je ne sais pas si ce raccourci fonctionne sous windows.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Un carré plein de vide
Tester une touche en qnx
laisser une ligne vide (vb6)
[java] tester existence variable/ objet
 > Tous les forums > Forum Autres langages