본문 바로가기
프로그래밍/C & C++

[C++] Argument Parser (python argparse like)

by 별준 2024. 1. 2.

 

 

GitHub - junstar92/argparse: C++ (python-argparse-like) Argument Parser

C++ (python-argparse-like) Argument Parser. Contribute to junstar92/argparse development by creating an account on GitHub.

github.com

C++에서 파이썬의 argparse와 유사하게 커맨드라인 인자를 읽을 수 있는 파서를 구현해봤습니다. 파이썬의 argparse와 유사하게 사용할 수 있습니다. 아직 업데이트 중이어서 약간 바뀔 가능성은 있습니다.

 

기본적은 사용법은 아래와 같습니다.

#include <iostream>
#include <argparse/argparse.h>

int main(int argc, char** argv)
{
    auto parser = argparse::ArgumentParser();

    parser.add_argument("square")
    .set_help("display a square of a given number");
    parser.add_argument("-v", "--verbose", argparse::actions::StoreTrueAction())
    .set_help("increase output verbosity");

    auto args = parser.parse_args(argc, argv);
    int square = args.get<int>("square");
    
    if (args.get<bool>("verbose")) {
        std::cout << "the square of " << square << " equals " << square * square << std::endl;
    }
    else {
        std::cout << square * square << std::endl;
    }

    return 0;
}

이렇게 작성한 코드를 컴파일하면 아래와 같은 방식으로 사용할 수 있습니다.

$ ./program 4
16
$ ./program 4 --verbose
the square of 4 equals 16
$ ./program --verbose 4
the square of 4 equals 16
$ ./program -h         
usage: program [-h] [-v] square

positional arguments:
  square         display a square of a given number

options:
  -h, --help     show this help message and exit
  -v, --verbose  increase output verbosity

 

부족하지만 사용해보시고 피드백주시면 감사하겠습니다.

'프로그래밍 > C & C++' 카테고리의 다른 글

[C++] Tuple 구현  (0) 2024.01.01
[C++] 템플릿과 상속 (EBCO, CRTP)  (0) 2023.12.29
[C++] Typelists  (0) 2023.12.23
[C++] 메타프로그래밍  (0) 2023.12.16
[C++] Type Erasure  (4) 2023.12.15

댓글