부스트 후 비 플래그 및 비 옵션 토큰을 얻는 방법 :: program_options 내 명령 줄 아르기
-
19-09-2019 - |
문제
파이썬에서는 내를 만들 수 있습니다 optparse 옵션과 비 옵션/플래그를 두 개의 다른 버킷으로 자동 필터링하는 인스턴스 :
(options, args) = parser.parse_args()
부스트 :: program_options를 사용하면 나머지 비 옵션 및 비 플래그 토큰 인 토큰 목록을 어떻게 검색합니까?
예를 들어 내 프로그램에 깃발이있는 경우
--foo
--bar BAR
그런 다음 명령 줄을 전달합니다.
--foo hey --bar BAR you
"Hey"및 "You"로만 구성된 목록을 어떻게 구할 수 있습니까?
해결책
IIRC, 당신은 조합을 사용해야합니다 positional_options_description
그리고 숨겨진 옵션. 아이디어는 (1) 일반 옵션을 추가하고 이름을 부여하는 것입니다. --positional=ARG
, (2) 도움말 설명에 해당 옵션을 포함하지 마십시오. (3) 구성 command_line_parser
모든 위치 인수를 마치 취급합니다 --positional
지정되고 (4) 위치 인수를 검색합니다. vm["positional"].as< std::vector<std::string> >()
.
소스 트리 어딘가에 예제가있을 수 있지만 지금은이 컴퓨터에 없습니다.
다른 팁
예는 다음과 같습니다.
namespace po = boost::program_options;
po::positional_options_description m_positional;
po::options_description m_cmdLine;
po::variables_map m_variables;
m_cmdLine.add_options()
(/*stuff*/)
("input", po::value<vector<string> >()->composing(), "")
;
m_positional.add("input", -1);
po::parsed_options parsed = po::command_line_parser(argc, argv)
.options(m_cmdLine)
.positional(m_positional)
.allow_unregistered()
.run();
// store, notify, etc
그런 다음 "입력"명명 옵션을 문자열의 벡터로 가져 오면 모두 설정됩니다.
제휴하지 않습니다 StackOverflow