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
591 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!

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