2010-03-05 2 views
4

Boost.Program_options는 다음 명령 행 인수를 통해 다수의 토큰을 전달하는 기능을 제공? 내가 올 수있는 유일한 해결책은 수동으로 값을 할당하는 것입니다.Boost.Program_options 고정 개수

int nums[2];  

po::options_description desc("Allowed options"); 
desc.add_options() 
    ("help", "Produce help message.") 
    ("nums", "Numbers.") 
; 

po::variables_map vm; 
po::store(po::parse_command_line(argc, argv, desc), vm); 

if (vm.count("nums")) { 
    // Assign nums 
} 

이 방법은 다소 어색합니다. 더 나은 해결책이 있습니까?

답변

2

부스트 라이브러리는 미리 정의 된 메커니즘만을 제공합니다. 빠른 검색은 고정 된 수의 값으로 무언가를 찾지 못했습니다. 그러나 당신은 이것을 직접 만들 수 있습니다. po::value< std::vector<int> >(&nums)->multitoken()은 전문화 된 value_semantic 클래스입니다. 보시다시피,이 클래스는 min_tokensmax_tokens 메서드를 제공하며, 원하는대로 정확하게 수행 할 수 있습니다. typed_valuedefinition (이 생성 된 개체 인 경우 po::value< std::vector<int> >(&nums)->multitoken())을 호출하면 메서드를 재정의해야하는 방법을 파악할 수 있습니다.

+0

나는'min_tokens'와'max_tokens'를 보았습니다. 그러나 어떻게 사용되어야하는지 확신 할 수 없었습니다. 'typed_value' 클래스를 지적 해 주셔서 감사합니다. 비록 내가 바라는만큼 쉬운 일은 아니지만 그것이가는 길인 것 같습니다. – kloffy