Maison > développement back-end > C++ > Comment puis-je analyser les arguments de ligne de commande en C ?

Comment puis-je analyser les arguments de ligne de commande en C ?

Susan Sarandon
Libérer: 2024-12-06 03:36:09
original
547 Les gens l'ont consulté

How Can I Parse Command-Line Arguments in C  ?

Analyse des arguments de ligne de commande en C

Cet article explore diverses méthodes d'analyse des arguments de ligne de commande en C, en fournissant une analyse et un code détaillés exemples pour chaque approche.

Une méthode simple consiste à utiliser la fonction std::find de la bibliothèque standard. Cette approche convient aux options de ligne de commande simples, telles que la recherche d'une option à un seul mot (-h pour l'aide) ou la récupération du nom de fichier après l'argument -f.

#include <algorithm>

char* getCmdOption(char ** begin, char ** end, const std::string &amp; option)
{
    char ** itr = std::find(begin, end, option);
    if (itr != end &amp;&amp; ++itr != end)
    {
        return *itr;
    }
    return 0;
}

bool cmdOptionExists(char** begin, char** end, const std::string&amp; option)
{
    return std::find(begin, end, option) != end;
}
Copier après la connexion

Pour améliorer cette approche , l'encapsulation de ces fonctions dans une classe peut offrir une commodité supplémentaire.

class InputParser{
    public:
        InputParser (int &amp;argc, char **argv){
            for (int i=1; i < argc; ++i)
                this->tokens.push_back(std::string(argv[i]));
        }
        /// @author iain
        const std::string&amp; getCmdOption(const std::string &amp;option) const{
            std::vector<std::string>::const_iterator itr;
            itr =  std::find(this->tokens.begin(), this->tokens.end(), option);
            if (itr != this->tokens.end() &amp;&amp; ++itr != this->tokens.end()){
                return *itr;
            }
            static const std::string empty_string("");
            return empty_string;
        }
        /// @author iain
        bool cmdOptionExists(const std::string &amp;option) const{
            return std::find(this->tokens.begin(), this->tokens.end(), option)
                   != this->tokens.end();
        }
    private:
        std::vector <std::string> tokens;
};
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal