 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Pascal Guest
|
Posted: Tue Feb 08, 2005 9:40 pm Post subject: Pause dans un prog |
|
|
Bonjour,
Eternel problème : comment faire pour faire une pause dans un programme?
Je dois afficher un message d'erreur à l'utilisateur, puis qu'il
appuie sur entrer pour repasser sur le menu principal.
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Tue Feb 08, 2005 9:51 pm Post subject: Re: Pause dans un prog |
|
|
On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:
| Quote: | Eternel problème : comment faire pour faire une pause dans un programme?
|
Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);
--
;-)
|
|
| Back to top |
|
 |
noone@nowhere.com Guest
|
Posted: Wed Feb 09, 2005 9:39 am Post subject: Re: Pause dans un prog |
|
|
Fabien LE LEZ wrote:
| Quote: | On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:
Eternel problème : comment faire pour faire une pause dans un programme?
Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);
|
et la mauvaise méthode
system("pause");
(je me demande si DevC++ ne fait pas un truc comme ça par défaut comme
projet console... à confirmer)
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Wed Feb 09, 2005 10:08 am Post subject: Re: Pause dans un prog |
|
|
On Wed, 09 Feb 2005 10:39:58 +0100, "noone (AT) nowhere (DOT) com"
<noone (AT) nowhere (DOT) com>:
| Quote: | et la mauvaise méthode
system("pause");
|
Mon dieu mon dieu... Je préfère encore getch().
--
;-)
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Wed Feb 09, 2005 12:10 pm Post subject: Re: Pause dans un prog |
|
|
Fabien LE LEZ wrote:
| Quote: | On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:
Eternel problème : comment faire pour faire une pause dans un
programme? |
| Quote: | Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);
|
Juste un détail, mais qu'est-ce que tu entends par « ligne de
commande » ? Parce que j'aurais dit, moi, que (n)curses est tout
autre qu'en ligne de commande.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Wed Feb 09, 2005 2:02 pm Post subject: Re: Pause dans un prog |
|
|
On 9 Feb 2005 04:10:38 -0800, [email]kanze (AT) gabi-soft (DOT) fr[/email]:
| Quote: | qu'est-ce que tu entends par « ligne de
commande » ?
|
C'est un raccourci pour désigner un mode non-GUI.
--
;-)
|
|
| Back to top |
|
 |
Pascal Guest
|
Posted: Wed Feb 09, 2005 2:24 pm Post subject: Re: Pause dans un prog |
|
|
On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:
| Quote: | string ligne_bidon;
getline (cin, ligne_bidon);
|
sous linux, ca ne marche pas. Alors j'ai pensé à faire un fflush(null),
mais ça n'a pas marché.
|
|
| Back to top |
|
 |
Pascal Guest
|
Posted: Wed Feb 09, 2005 4:32 pm Post subject: Re: Pause dans un prog |
|
|
On Wed, 09 Feb 2005 11:08:09 +0100, Fabien LE LEZ wrote:
| Quote: | Mon dieu mon dieu... Je préfère encore getch().
|
Pour utiliser getch() sous linux, il faut bien inclure <curses.h>?
J'ai fait ça, mais ça ne marche pas non plus.
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Thu Feb 10, 2005 9:13 am Post subject: Re: Pause dans un prog |
|
|
Pascal wrote:
| Quote: | On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:
string ligne_bidon;
getline (cin, ligne_bidon);
sous linux, ca ne marche pas. Alors j'ai pensé à faire un
fflush(null), mais ça n'a pas marché.
|
Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
Alexandre Guest
|
Posted: Thu Feb 10, 2005 1:48 pm Post subject: Re: Pause dans un prog |
|
|
"Pascal" <teapa5 (AT) B022-05 (DOT) fr> a écrit dans le message de news:
[email]pan.2005.02.09.14.24.50.409495 (AT) B022-05 (DOT) fr[/email]...
| Quote: | On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:
string ligne_bidon;
getline (cin, ligne_bidon);
sous linux, ca ne marche pas. Alors j'ai pensé à faire un fflush(null),
mais ça n'a pas marché.
|
si tu veux vider le buffer d'entrée je ferais plutôt
cin.sync() ;
avant.
|
|
| Back to top |
|
 |
Pascal Guest
|
Posted: Thu Feb 10, 2005 2:42 pm Post subject: Re: Pause dans un prog |
|
|
On Thu, 10 Feb 2005 01:13:39 -0800, kanz wrote:
| Quote: | Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.
|
Dans ce cas, je ne comprends pas pourquoi ça ne marche pas. Je ne touche pas au ncurses. Tout ce que
je fais, c'est afficher un message avant.
|
|
| Back to top |
|
 |
drkm Guest
|
Posted: Thu Feb 10, 2005 5:41 pm Post subject: Re: Pause dans un prog |
|
|
Pascal <teapa5 (AT) B022-05 (DOT) fr> writes:
| Quote: | On Thu, 10 Feb 2005 01:13:39 -0800, kanz wrote:
Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.
Dans ce cas, je ne comprends pas pourquoi ça ne marche pas. Je ne touche pas au ncurses. Tout ce que
je fais, c'est afficher un message avant.
|
Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?
--drkm
|
|
| Back to top |
|
 |
Pascal Guest
|
Posted: Thu Feb 10, 2005 8:11 pm Post subject: Re: Pause dans un prog |
|
|
drkm wrote:
| Quote: | Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?
|
A part avoir fait cout << "machin", y a rien d'autre. Peut être parce
que je mets 2 "n", mais dans ce cas, le fflush(NULL) aurait dû tout
supprimer.
--
Pascal
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Fri Feb 11, 2005 8:04 am Post subject: Re: Pause dans un prog |
|
|
Pascal wrote:
| Quote: | drkm wrote:
Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?
A part avoir fait cout << "machin", y a rien d'autre. Peut
être parce que je mets 2 "n", mais dans ce cas, le
fflush(NULL) aurait dû tout supprimer.
|
Je ne suis pas sûr de comprendre. Tu sembles mélanger les
entrées et les sorties.
Il s'agit ici des entrées. Donc, le « cout << ... » et le
« fflush » n'ont aucun effet -- ils ne sont définis que sur des
flux de sortie (et évidemment, fflush n'a aucun effet sur les
flux C++ en général).
La question est plutôt : est-ce que tu as fais des entrées
avant, et comment ? Si tu as fais des entrées partielles, il est
possible, voire probable, qu'il te reste une partie de la ligne
lue avant dans le buffer de cin. Dans ce cas-là, getline
retourne tout de suite avec cette reste de ligne.
En général (mais ce n'est qu'un avis personnel), je le trouve
mieux d'éviter de mélanger les types d'entrées. Si les entrées
sont orientées ligne (ce qui est normalement le cas pour cin),
on lit au moyen de getline, et uniquement au moyen de getline.
Pour découper et analyser plus finement, on se sert de
istringstream. Il y a des exceptions, mais dans le cas
d'exception, il faut quand même bien avancer jusqu'à la fin de
ligne quand on a fini.
Enfin, un peu à part : quel est l'intérêt de cette procedure ?
Les seuls cas que je connais où on veut se bloquait jusqu'une
entrée utilisateur, ce sont les outils du genre more ou pg, et
typiquement, ils gèrent les entrées d'une façon spéciale afin
d'offir des possibilités en plus. (Je crois, par exemple, que le
less de GNU utilise getline.)
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Sun Feb 13, 2005 9:33 pm Post subject: Re: Pause dans un prog |
|
|
Alexandre wrote:
| Quote: | "Pascal" <teapa5 (AT) B022-05 (DOT) fr> a écrit dans le message de news:
[email]pan.2005.02.09.14.24.50.409495 (AT) B022-05 (DOT) fr[/email]...
On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:
string ligne_bidon;
getline (cin, ligne_bidon);
sous linux, ca ne marche pas. Alors j'ai pensé à faire un
fflush(null), mais ça n'a pas marché.
si tu veux vider le buffer d'entrée je ferais plutôt
cin.sync() ;
avant.
|
Fonctionne qui n'existe pas.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|