Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghuraikan Argumen Baris Perintah dalam C?

Bagaimanakah Saya Boleh Menghuraikan Argumen Baris Perintah dalam C?

Susan Sarandon
Lepaskan: 2024-12-06 03:36:09
asal
520 orang telah melayarinya

How Can I Parse Command-Line Arguments in C  ?

Menghuraikan Argumen Baris Perintah dalam C

Artikel ini meneroka pelbagai kaedah untuk menghuraikan argumen baris arahan dalam C , menyediakan analisis dan kod terperinci contoh untuk setiap pendekatan.

Satu kaedah mudah ialah menggunakan fungsi std::find daripada perpustakaan standard. Pendekatan ini sesuai untuk pilihan baris perintah mudah, seperti mencari pilihan perkataan tunggal (-h untuk bantuan) atau mendapatkan semula nama fail selepas hujah -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;
}
Salin selepas log masuk

Untuk meningkatkan pendekatan ini , merangkum fungsi ini dalam kelas boleh memberikan kemudahan tambahan.

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;
};
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Argumen Baris Perintah dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan