본문 바로가기
프로그래밍/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