기존 프로그램에서 업데이트를 개발 중입니다. Posix의 getopt_long()을 boost :: program_options으로 바꿉니다. 하지만해야 나의 작업은 작동하지 않습니다 : 내가 좋아하는 읽기 인수를 갖고 싶어 : 나는 부스트 :: program_options :: command_line_style에서 많은 가능성을 시도하고 있었다getopt_long과 호환되는 C++ boost :: program_options 인수 읽기
-server=www.example.com
-c config.txt
,하지만 내가하는 것 조합을 찾을 수 없습니다 getopt_long와 동등한 동작을 제공합니다.
-server=www.example.com
내가 플래그가 필요합니다 :
command_line_style::allow_long_disguise | command_line_style::long_allow_adjacent
을하지만 난에 대한 설립 플래그 문제가 : 나는 플래그 것을 발견
-c config.txt
을
나는 인수 것을 발견 :
command_line_style::allow_short | command_line_style::allow_dash_for_short | command_line_style::short_allow_next
내가 원하는 것을 거의 알려줘. 거의 다음과 같습니다 :
ProgramOptionsParserTest.cpp:107: Failure
Value of: params.config
Actual: " config.txt"
Expected: expectedParams.config
Which is: "config.txt"
그래서 boost :: algorithm :: trim()을 사용하면 원하는대로됩니다.
내 질문은 : boost :: program_options 있지만 boost :: algorithm :: trim() 않고 -c config.txt 같은 인수를 처리 할 수 있습니까?
EDIT 위의 플래그가 등록되지 않은 인수와 함께 작동하지 않는 것으로 나타났습니다. 내가 등록한 옵션 :
programOptionsDescription.add_options()
("help,h", "display help message")
("config,c", value<std::string>(), "use configfile")
("server,s", value<std::string>(), "server")
("ipport,p", value<uint16_t>(), "server port");
하지만 등록되지 않은 옵션을 사용하는 경우 (예, 내가 가진 basic_command_line_parser :: allow_unregistered()) :
-calibration=something
내가 볼 :
the argument ('alibration=something') for option '-config' is invalid
내 질문 이후 버전 : boost :: program_options를 사용하여 getopt_long으로 작업하는 인수를 처리하는 방법은 무엇입니까?
이 답변은 관련이 없습니다. 문제는 명확하게 프로그램 옵션을 파싱하는 것을 목표로합니다 (posix getopt() 등) – user23573