Heim > Backend-Entwicklung > C++ > Wie kann man Befehlszeilenargumente in C effizient analysieren?

Wie kann man Befehlszeilenargumente in C effizient analysieren?

Patricia Arquette
Freigeben: 2024-11-27 07:31:09
Original
640 Leute haben es durchsucht

How to Efficiently Parse Command Line Arguments in C  ?

Befehlszeilenargumente in C analysieren

In der Welt der Programmierung stellt das Parsen von Befehlszeilenargumenten oft eine Herausforderung dar, insbesondere wenn es um komplexe Eingaben geht Muster. Stellen Sie sich ein Programm vor, das Argumente im folgenden Format akzeptiert:

prog [-abc] [input [output]]
Nach dem Login kopieren

Die Frage:

Wie können wir solche Befehlszeilenargumente in C mithilfe der integrierten Funktion effizient analysieren Funktionen oder benutzerdefinierter Code?

Boost und GNU:

Die bereitgestellten Vorschläge Die Verwendung von boost::program_options und GNU getopt sind zuverlässige Optionen. Diese Bibliotheken bieten robuste Funktionalität für die Handhabung einer Vielzahl von Befehlszeilenargument-Szenarien.

Standardbibliotheksansatz:

Für einfachere Situationen eignet sich jedoch die Funktion std::find bietet eine einfache Möglichkeit, Argumente zu analysieren. Mit diesem Ansatz können Sie nach bestimmten Flags suchen oder den Dateinamen nach einem -f-Argument abrufen.

#include <algorithm>

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

Gekapselter Code:

Um die Lesbarkeit und Wartbarkeit des Codes zu verbessern, Sie können die Parsing-Logik in einem dedizierten Paket kapseln Klasse.

class InputParser{
    public:
        InputParser (int &amp;argc, char **argv){
            for (int i=1; i < argc; ++i)
                this->tokens.push_back(std::string(argv[i]));
        }
        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;
        }
        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;
};
Nach dem Login kopieren

Fazit:

Diese Methoden bieten effiziente Möglichkeiten zum Parsen von Befehlszeilenargumenten in C und eignen sich sowohl für einfache als auch für komplexere Szenarien. Wählen Sie den Ansatz, der Ihren spezifischen Anforderungen an Code-Einfachheit, Flexibilität und Leistung am besten entspricht.

Das obige ist der detaillierte Inhalt vonWie kann man Befehlszeilenargumente in C effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage