2012-10-30 3 views
1

부스트 program_options 라이브러리를 사용하여 명령 줄 및 구성 파일 데이터를 처리하고 있지만 처리 된 데이터에서 필요한 문자열을 가져 오는 방법이 명확하지 않습니다.부스트 program_options 사용할 때 명령 줄에서 문자열 가져 오기

getaddrinfo 함수에 대한 올바른 형식으로 program_options 명령 줄 매개 변수를 얻으려면 어떻게해야합니까?

//First, the options are declared 

po::options_description config("Configuration"); 
    config.add_options() 
     ("IPAddress", po::value< vector<string> >(),"127.0.0.1") 
     ("Port", po::value< vector<string> >(),"5000") 
     ; 
//... 

// Attach the config descriptions to the command line and/or config file 

    po::options_description cmdline_options; 
    cmdline_options.add(config).add(hidden); 

    po::options_description config_file_options; 
      config_file_options.add(hidden); 

    po::options_description visible("Allowed options"); 
      visible.add(config); 

    po::positional_options_description p; 
      p.add("input-file", -1); 

    po::variables_map vm; 
    store(po::command_line_parser(ac, av). 
      options(cmdline_options).positional(p).run(), vm); 
    notify(vm); 

// Use the command line options for IPAddress and Port 
// TODO: Load the config file's address and port information 
int retval = getaddrinfo(vm["IPAdress"].as<string>(),vm["Port"].as<string>(), &hint, &list); 
// This doesn't work and neither does this 
// int retval = getaddrinfo(vm["IPAdress"].as< vector<string> >(),vm["Port"].as<vector <string> >(), &hint, &list); 

// getaddressinfo 

getaddrinfo를위한 netdb에서 프로토 타입은 다음과 같습니다 여기

extern int getaddrinfo (__const char *__restrict __name, 
     __const char *__restrict __service, 
     __const struct addrinfo *__restrict __req, 
     struct addrinfo **__restrict __pai); 

program_options API를 높일 수있는 링크 : 필요한 인수가 당신에게 유형 char *을 가지고해야하는 경우

http://www.boost.org/doc/libs/1_37_0/doc/html/program_options.html

답변

3

string을 제공하려고하면 컴파일러에서 잘못된 내용을 알려줍니다. 그 오류 메시지를 읽고 그것을 이해하려고 노력하십시오.

string에서 char *을 얻으려면 c_str() 메서드를 사용합니다.

+1

감사합니다. 어디 c_str() 함수를 적용할지 알아낼 수 없습니다. "IPAdress"]를 < string >() .c_str()과 같이 끝까지 붙이려고 할 때, "IPAdress"]를 < string >()과 같이 사용할 때 .c_str() – bentaisan

+0

@ 벤 타이 산 오신 것을 환영합니다. 그리고 컴파일러는 친구인지 기억하십시오. :) – HonkyTonk