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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!