2012-04-30 5 views
1

나는 boost 프로그램 옵션을 사용하고 있으며 사용자가 지정한 명령 행 스위치를 기반으로 문자열이나 int로 일부 위치 인수를 해석하려고합니다. 예를 들어부스트 프로그램 옵션 - 조건부로 위치 지정 args를 입력하는 방법?

foo -asint outputfile 10 11 12 
foo -asstr outputfile 10 11 12 

번째의 제 1 실시 예와의 int 문자열로 (10,11,12) 나열한다.

부스트 포를 사용하여이를 수행하는 방법을 알 수 없습니다. 다음은 내 명령 행 구문 분석 스 니펫입니다.

// basic options group 
po::options_description genericOpts("allowed options"); 
genericOpts.add_options() 
    ("help,h", "display help message/usage") 
    ("asint,i", "interpret arguments ints instead of strings") 
; 

// hidden options group - don't show in help 
po::options_description hiddenOpts("hidden options"); 
hiddenOpts.add_options() 
    ("filename", po::value<string>()->required(),"output file") 
    ("inputs", po::value<vector<string>>(), "inputs, either strings or ints") 
; 

po::options_description cmdline_options; 
cmdline_options.add(genericOpts).add(hiddenOpts); 

po::positional_options_description p; 
p.add("filename",1).add("inputs", -1); 

po::variables_map vm; 
po::store(po::command_line_parser(argc, argv). 
      options(cmdline_options).positional(p).run(), vm); 

답변

1

항상 문자열로 읽고 다른 옵션에 따라 일부 후 처리를 수행하십시오.