211 votes

Analyse des arguments de la ligne de commande en C++ ?

Quelle est la meilleure façon d'analyser les arguments de la ligne de commande en C++ si le programme est spécifié pour être exécuté comme ceci :

prog [-abc] [input [output]]

Existe-t-il un moyen de le faire intégré à la bibliothèque standard, ou dois-je écrire mon propre code ?


En rapport :

17voto

Oliver Nina Points 53
for (int i = 1; i < argc; i++) {

    if (strcmp(argv[i],"-i")==0) {
        filename = argv[i+1];
        printf("filename: %s",filename);
    } else if (strcmp(argv[i],"-c")==0) {
        convergence = atoi(argv[i + 1]);
        printf("\nconvergence: %d",convergence);
    } else if (strcmp(argv[i],"-a")==0) {
        accuracy = atoi(argv[i + 1]);
        printf("\naccuracy:%d",accuracy);
    } else if (strcmp(argv[i],"-t")==0) {
        targetBitRate = atof(argv[i + 1]);
        printf("\ntargetBitRate:%f",targetBitRate);
    } else if (strcmp(argv[i],"-f")==0) {
        frameRate = atoi(argv[i + 1]);
        printf("\nframeRate:%d",frameRate);
    }

}

5voto

Jay Points 6999

AnyOption est une classe C++ permettant d'analyser facilement les options complexes de la ligne de commande. Elle analyse également les options d'un fichier source au format paire d'options-valeurs.

AnyOption implémente les options traditionnelles de style POSIX ( -n ) ainsi que les nouvelles options longues de style GNU ( --name ). Ou vous pouvez utiliser une version plus simple des options longues ( -name ) en demandant d'ignorer les options de style POSIX.

3voto

Macke Points 13474

Je recommande boost::program_options si vous pouvez utiliser la librairie Boost.

Il n'y a rien de spécifique dans la STL ni dans les librairies d'exécution C++/C habituelles.

2voto

Denis Shevchenko Points 369

Essayez la bibliothèque CLPP. C'est une bibliothèque simple et flexible pour l'analyse des paramètres de ligne de commande. En-tête seulement et multiplateforme. Utilise uniquement les bibliothèques ISO C++ et Boost C++. IMHO il est plus facile que Boost.Program_options.

Bibliothèque : http://sourceforge.net/projects/clp-parser

26 octobre 2010 - nouvelle version 2.0rc. De nombreux bugs corrigés, refactoring complet du code source, documentation, exemples et commentaires ont été corrigés.

2voto

kebs Points 870

Réponse tardive, mais j'ai utilisé GetPot pour certains projets : http://getpot.sourceforge.net/

Il n'a pas été mis à jour récemment, mais il est bien documenté et fonctionne bien. Vous pouvez l'essayer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X