Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Split d'une string

14 réponses
Avatar
Guillaume GOURDIN
Bonjour à tous,

comment ecririez-vous une fonction permettant de séparer les arguments
d'une ligne de commande. Autrement dit une fonction dont le prototype serait

bool split_args(const string & command_line, vector<string> & args)

et qui remplirait le vector 'args', en prenant soin:
- de gérer correctement les espaces mutiples
- de gérer correctement les guillemets

Merci pour votre aide.

4 réponses

1 2
Avatar
Fabien LE LEZ
On Sat, 06 Dec 2008 14:58:07 +0100, Wykaaa :

Ca relève de l'analyse lexicale et/ou syntaxique, donc voir les outils
lex, flex et/ou yacc et bison.



C'est un marteau-piqueur pour tuer une mouche...
Avatar
Mickaël Wolff
James Kanze a écrit :

Tiens, c'est la première fois que je vois le mot « switch »
traduit par « commutateur ». Dans les cercles que je fréquente,
on dit « option », quand ce n'est pas carrément « switch ».



Je ne sais plus où j'ai pris cette habitude :) Par contre, pour
revenir sur mon intervention, elle était effectivement maladroite.
J'avais mal compris la demande initiale. J'espère juste que ça aura
permis d'étoffer la réponse des contributeurs pertinents :-/

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
James Kanze
On Dec 6, 11:08 am, Fabien LE LEZ wrote:
On Sat, 6 Dec 2008 01:58:34 -0800 (PST), James Kanze
:



>C'est une question de langage:-). Le "cf" n'est pas un groupe
>d'options, mais plutôt une commande. Sauf qu'évidemment, on
>peut l'écrire "-cf" aussi, sans qu'il cesse d'être une
>commande pour autant.



En fait, l'écriture "normale", c'est : tar c -f archive.tar
bidule truc Remplacer "c -f" par "cf" est un raccourci, bien
pratique mais qui ne facilite pas la lecture...



Selon la version de tar que tu as. Comme j'ai dit, tar n'est pas
normalisé, et historiquement, il y a eu pas mal de variants,
incompatible entre eux. Je sais que dans certains fichiers de
make, j'ai un cible « export » de tar, et que je n'ai jamais
réussi à trouver une écriture de la commande qui marchait à la
fois avec le tar de GNU et celui de Solaris. (À la fin, j'ai
installé le tar de GNU partout.)

>(Ça, au moins, avec la version de GNU. L'interface de tar
>n'est pas spécifiée par Posix/Open Group, et en fait varie
>beaucoup d'une Unix à un autre. Historiquement, je crois que
>le '-' était obligatoire.)



Sous Linux (seul système Posix que je connais), l'écriture la
plus cohérente avec les autres options serait
tar -cf ...
ou
tar -c -f ...



Mébon, manisfestement, la cohérence n'est pas toujours là...
Y'a qu'à voir la syntaxe de dd...



Le problème de base, je crois, c'est que la « norme » ne
s'applique qu'à une liste de fichiers avec des options. Dès que
la commande ait besoin d'autres choses sur la ligne de commande
(tar, dd, find, etc.), le modèle de base ne passe plus.

--
James Kanze (GABI Software) email:
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
Avatar
Christophe Lephay
"James Kanze" a écrit dans le message de groupe de
discussion :

On Dec 5, 3:05 pm, Mickaël Wolff wrote:
Guillaume GOURDIN a écrit :



> comment ecririez-vous une fonction permettant de séparer les
> arguments d'une ligne de commande. Autrement dit une
> fonction dont le prototype serait



Je ne l'écrirais pas :
<http://www.boost.org/doc/libs/1_37_0/doc/html/program_options.html>



;)



Je n'ai pas l'impression que ça fait ce qu'il veut. (En général,
j'ai l'impression que ce qu'il fait est quelque chose que
prèsque personne ne veut.)



En fait, ça ressemble pas al à une question de cours ;)
1 2