>백엔드 개발 >C++ >C에서 명령줄 인수를 어떻게 구문 분석할 수 있나요?

C에서 명령줄 인수를 어떻게 구문 분석할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 03:36:09517검색

How Can I Parse Command-Line Arguments in C  ?

C에서 명령줄 인수 구문 분석

이 문서에서는 C에서 명령줄 인수를 구문 분석하는 다양한 방법을 살펴보고 자세한 분석 및 코드를 제공합니다. 각 접근 방식의 예입니다.

간단한 방법 중 하나는 표준의 std::find 함수를 활용하는 것입니다. 도서관. 이 접근 방식은 단일 단어 옵션(도움말의 경우 -h)을 검색하거나 -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;
}

이 접근 방식을 향상하려면 , 이러한 기능을 클래스 내에 캡슐화하면 추가적인 편의성을 제공할 수 있습니다.

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;
};

위 내용은 C에서 명령줄 인수를 어떻게 구문 분석할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.