OVH Cloud OVH Cloud

cin et la redirection de fichier

2 réponses
Avatar
Quentin
Bonjour à tous,
J'utilise la redirection de fichier 'monprog < monfichier' pour lancer mon
programme (c'est une obligation).
Dans ce programme, j'utilise cin pour recuperer les données du fichier.
Est-il possible -- après avoir vidé le tampon de l'entrée standard -- de
capturer des données toujours avec cin, mais cette fois ci en provenance
directe du clavier ??

Merci .

2 réponses

Avatar
Fabien LE LEZ
On Wed, 26 Nov 2003 19:53:17 +0100, "Quentin"
wrote:

Est-il possible -- après avoir vidé le tampon de l'entrée standard -- de
capturer des données toujours avec cin, mais cette fois ci en provenance
directe du clavier ?


Pour ton programme, le clavier n'existe plus (du moins en tant que
flux), puisqu'il a été remplacé par un fichier par le système
d'exploitation.
J'entrevois deux solutions :
- Demander à ton système d'exploitation de rajouter les entrées
clavier à la fin du flux initial. Je ne sais pas si c'est possible,
mais en tout cas ce n'est plus de la programmation, juste du
paramétrage de l'OS.
- Accéder directement au clavier, sans passer par les flux
standard (ça ne répond pas vraiment à la question, puisque les données
n'arrivent pas sur cin, mais bon...). Curses te permettra peut-être de
faire ça tout en restant portable ; sinon, utilise les fonctions de
l'API de ton OS (cf fr.comp.os.ms-windows.programmation pour
MS-Windows).

--
;-)

Avatar
James Kanze
Fabien LE LEZ writes:

|> On Wed, 26 Nov 2003 19:53:17 +0100, "Quentin"
|> wrote:

|> >Est-il possible -- après avoir vidé le tampon de l'entrée
|> >standard -- de capturer des données toujours avec cin, mais
|> >cette fois ci en provenance directe du clavier ?

|> Pour ton programme, le clavier n'existe plus (du moins en tant que
|> flux), puisqu'il a été remplacé par un fichier par le
|> système d'exploitation.
|> J'entrevois deux solutions :
|> - Demander à ton système d'exploitation de rajouter les
|> entrées clavier à la fin du flux initial. Je ne sais pas si
|> c'est possible, mais en tout cas ce n'est plus de la programmation,
|> juste du paramétrage de l'OS.
|> - Accéder directement au clavier, sans passer par les flux
|> standard (ça ne répond pas vraiment à la question, puisque
|> les données n'arrivent pas sur cin, mais bon...). Curses te
|> permettra peut-être de faire ça tout en restant portable ;
|> sinon, utilise les fonctions de l'API de ton OS (cf
|> fr.comp.os.ms-windows.programmation pour MS-Windows).

Sous Unix, et je crois aussi sous Windows, il existe un nom de fichier
qui représente le terminal associé au processus (à condition
qu'il y en a). Ouvrir un ifstream sur ce fichier permet, en
général, de lire le clavier.

Sous Unix, il s'appelle «@/dev/tty@». Sous MS-DOS, c'était «
CONS: », ou quelque chose du genre -- je l'essaierai à tout hazard
sous Windows. Sinon, effectivement, il faudrait démander dans un
groupe spécifique à ton système d'exploitation.

Et quelque soit le système, n'oublie pas que tous les processus n'ont
pas forceément un clavier associé ; que l'ouverture peut
échouer, et qu'il faut que tu traites l'erreur.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93