boost
부스트 프로그램 옵션
수색…
기본 사용법
Boost 프로그램 옵션은 명령 행 인수를 구문 분석하고 처리하는 간단하고 안전한 방법을 제공합니다.
#include <boost/program_options.hpp>
#include <string>
#include <iostream>
int main(int argc, char** argv) {
namespace po = boost::program_options;
po::variables_map vm;
po::options_description desc("Allowed Options");
// declare arguments
desc.add_options()
("name", po::value<std::string>()->required(), "Type your name to be greeted!");
// parse arguments and save them in the variable map (vm)
po::store(po::parse_command_line(argc, argv, desc), vm);
std::cout << "Hello " << vm["name"].as<std::string>() << std::endl;
return 0;
}
컴파일 및 실행 :
$ g++ main.cpp -lboost_program_options && ./a.out --name Batman
Hello Batman
boost::program_options::options_description 객체를 출력하여 예상되는 인수 형식을 인쇄 할 수 있습니다.
std::cout << desc << std::endl;
생산할 것이다 :
Allowed Options:
--name arg Type your name to be greeted!
오류 처리
boost::program_options::notify 는 매개 변수 전달시 오류를보고하는 데 사용할 수 있습니다.
#include <boost/program_options.hpp>
#include <string>
#include <iostream>
int main(int argc, char** argv) {
namespace po = boost::program_options;
po::variables_map vm;
po::options_description desc("Allowed Options");
// declare options
desc.add_options()
("name", po::value<std::string>()->required(), "Type your name to be greeted!");
// parse arguments
po::store(po::parse_command_line(argc, argv, desc), vm);
// check arguments
try {
po::notify(vm);
} catch (std::exception& e) {
std::cout << "Error: " << e.what() << std::endl;
std::cout << desc << std::endl;
return 1;
}
// program logic
std::cout << "Hello " << vm["name"].as<std::string>() << std::endl;
return 0;
}
잘못된 인수를 전달하면 유용한 오류 메시지가 나타납니다.
$ ./a.out
Error: the option '--name' is required but missing
Allowed Options:
--name arg Type your name to be greeted!
기본값
기본 값 명령 줄 인수는 쉽게 지정할 수 있습니다.
// declare options
desc.add_options()
("name", po::value<std::string>()->required(), "Type your name to be greeted!")
("rank", po::value<std::string>()->default_value("Dark Knight"), "Your rank");
그 값은 변수 맵에도 추가됩니다.
std::cout << "Hello " << vm["name"].as<std::string>() << " " << vm["rank"].as<std::string>() << std::endl;
설명에 기본값이 표시됩니다.
$ ./a.out
Error: the option '--name' is required but missing
Allowed Options:
--name arg Type your name to be greeted!
--rank arg (=Dark Knight) Your rank
... 지정되지 않은 경우 사용됩니다 ...
$ ./a.out --name Batman
Hello Batman Dark Knight
...하지만 명령 줄에서 덮어 쓸 수 있습니다.
$ ./a.out --name Batman --rank FlyingSquirrel
Hello Batman FlyingSquirrel
스위치
스위치는 값을 취하지 않는 명령 행 인수입니다. 다음과 같이 지정할 수 있습니다.
desc.add_options()
("hidden", po::bool_switch()->default_value(false), "Hide your name");
그리고 함께 사용 :
if (vm["hidden"].as<bool>())
std::cout << "Hello *****" << std::endl;
커맨드 라인에서 :
$ ./a.out --name Batman --hidden
Hello *****
설명에서 다음과 같이 표시됩니다.
Allowed Options:
--name arg Type your name to be greeted!
--rank arg (=Dark Knight) Your rank
--hidden Hide your name
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow