2016-08-29 2 views
2

내 프로그램 입력을 구문 분석하기 위해 부스트 program_options를 사용하려고합니다. 일반적으로 문서는 파싱에 필요한 정보를 제공합니다. 그러나 입력이 제공되지 않을 때 프로그램에서 사용 지침을 인쇄하도록하고 싶습니다. 알아낼 수는 없습니다. "기본"옵션이없는 것 같지 않으며 테스트 (제공된) 입력의 수를 계산하는 방법을 찾을 수 없습니다.Boost :: program_options - 제공되는 입력이 없을 때 사용합니다.

boost::program_options::options_description help("Usage"); 
help.add_options() 
    ("help", "print help info"); 

boost::program_options::options_description req("Required inputs"); 
req.add_options() 
    ("root", boost::program_options::value<std::string>(&images_root), "Root directory") 

boost::program_options::options_description opt("Option inputs"); 
opt.add_options() 
    ("verbose", boost::program_options::value<bool>(&verbose)->implicit_value(1), "Verbose"); 

boost::program_options::variables_map vm; 
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, all), vm); 
if (vm.count("help")) 
{ 
    std::cout << help; 
    return 1; 
} 

boost::program_options::notify(vm); 

가 어떻게 생성 할 수 있습니다 다음 (즉, 아무 입력이 std::cout << help을 할 수없는 경우) :

이 순간에 내 코드는?

./test-file 
>> print help info 
+0

방법에 대한 사용자 정의 유효성 검사기 기능을? – Shravan40

답변

1

당신은 예를 들어 argc

와 함께 할 수 있습니다 :

int main(int argc, char** argv) 
{ 
    if(argc <= 1) 
     std::cout << "Print Usage\n"; 

    return 0; 
} 
+0

@Roby에 동의합니다. 이 경우 다음과 같이 라인을 변경하십시오 :'if (vm.count ("help"))''if (vm.count ("help") || (argc == 0))' – kenba

+0

@kenba, 틀렸어. . 0 인수는 프로그램 이름 그 자체입니다 (즉 매개 변수가 분석되지 않으면 1이됩니다) – Roby

+1

죄송합니다 @Roby, 그래서 if (vm.count ("help") || (argc <= 1))'가됩니다. . BTW 일반적으로'int main (int argc, char ** argv)'두 개의 argc's보다는 ... – kenba

관련 문제