> 백엔드 개발 > C++ > C에서 명령줄 인수를 효율적으로 구문 분석하는 방법은 무엇입니까?

C에서 명령줄 인수를 효율적으로 구문 분석하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-27 07:31:09
원래의
557명이 탐색했습니다.

How to Efficiently Parse Command Line Arguments in C  ?

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

프로그래밍 세계에서 명령줄 인수 구문 분석은 특히 복잡한 입력을 처리할 때 문제가 되는 경우가 많습니다. 패턴. 다음 형식의 인수를 허용하는 프로그램을 생각해 보세요.

prog [-abc] [input [output]]
로그인 후 복사

질문:

내장된 기능을 사용하여 C에서 이러한 명령줄 인수를 어떻게 효율적으로 구문 분석할 수 있습니까? 함수 또는 사용자 정의 코드?

부스트 및 GNU:

boost::program_options 및 GNU getopt를 활용하기 위해 제공된 제안은 신뢰할 수 있는 옵션입니다. 이러한 라이브러리는 광범위한 명령줄 인수 시나리오를 처리하기 위한 강력한 기능을 제공합니다.

표준 라이브러리 접근 방식:

그러나 더 간단한 상황에서는 std::find 함수를 사용합니다. 인수를 구문 분석하는 간단한 방법을 제공합니다. 이 접근 방식을 사용하면 특정 플래그를 검색하거나 -f 인수 다음에 파일 이름을 검색할 수 있습니다.

#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;
}
로그인 후 복사

캡슐화된 코드:

코드 가독성과 유지 관리성을 향상하려면, 구문 분석 논리를 전용으로 캡슐화할 수 있습니다. class.

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;
};
로그인 후 복사

결론:

이러한 방법은 C에서 명령줄 인수를 구문 분석하는 효율적인 방법을 제공하여 단순 시나리오와 복잡한 시나리오 모두에 적합합니다. 코드 단순성, 유연성 및 성능에 대한 특정 요구 사항에 가장 적합한 접근 방식을 선택하세요.

위 내용은 C에서 명령줄 인수를 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿