[saisie clavier] ligne de commande
Bonjour. J'ai un problème. Je suis sur que vous pouvez m'aider, car c'est surement tout con. (je suis pas très familier du C++)
Voila: J'écris un ptit programme, en console, et l'utilisateur pourra lancer des "lignes de commandes". Par exemple:
Citation:
Envoyé par L'utilisateur
> open toto.txt
> hide init io
> save toto2.txt
> exit
ce à quoi correspondent ces lignes de commandes n'est pas du tout important. Ce qui me pose problème est qu'elles n'ont pas toutes le même nombre d'arguments!
Ce que je veux faire, c'est une fonction de saisie qui fonctionne quelque soit le nombre d'arguments (ok... inférieur à un max)
Dans un premier temps, j'étais tout content de voir que cin >> input considère l'espace comme un séparateur. J'ai donc voulu faire un truc du genre:
Code:
1 2 3 4 5 6 7 8 9
|
cin >> input; // l'utilisateur entre toute sa ligne
cmd = new Command(input); // on crée une "commande" avec le premier mot
while( ?????? )
{
//pour chaque mot restant sur cin, on ajoute un argument à "commande"
cin >> argument;
cmd->AddArgument(input);
} |
Mais je n'arrive pas a trouver une condition pour sortir de mon while. J'ai essayé while(!cin.eof()) mais bien sur ça ne marche pas.
Est-ce que quelqu'un a une idée???
Sinon, j'ai eu une autre idée:
dans la FAQ, je suis tombé sur: Comment saisir une chaîne contenant des espaces ? qui propose:
Code:
1 2 3 4 5
| #include <iostream>
#include <string>
std::string chaine;
std::getline( std::cin, chaine ); |
A partir de la je pourrai moi même analyser la ligne en entier et c'est goal! problème: Avec cette solution, je suis obligé d'appuyer 2 fois sur la touche <enter> à la fin de ma saisie... Pas très confortable
Est-ce que quelqu'un a une idée???
Merci d'avance!