부스트 v1.45.0 프로그램 옵션을 사용하는 Visual Studio 2008 C++ 응용 프로그램이 있습니다.부스트 프로그램 옵션을 사용하는 잘못된 옵션 값 예외
foo.exe -x 1,2, 4-7
과 같은 명령 줄 옵션을 구문 분석하여 [1, 2, 4, 5, 6, 7] 값을 가진 std::vector<int>
을 생성하고 싶습니다. 그래서, 나는 사용자 정의 검사기를 작성했습니다 :
typedef std::vector<int> IDList;
void validate(boost::any& v, const std::vector<std::string>& tokens, IDList*, int)
{
// Never gets here
}
int _tmain(int argc, _TCHAR* argv[])
{
IDList test_case_ids;
po::options_description desc("Foo options");
desc.add_options()
("id,x", po::value<IDList>(), "Specify a single ID or a range of IDs as shown in the following command line: foo.exe -x10,12, 15-20")
;
po::variables_map vm;
try
{
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
}
catch(const std::exception& e)
{
std::cerr << e.what() << std::endl;
std::cout << desc << std::endl;
return 1;
}
return 0;
}
그러나 나는 사용자 정의 검사기 코드를 얻지 못합니다. 항상 parse_command_line
에 in option 'id': invalid option value
이라는 메시지가있는 예외가 발생합니다.
원하는대로이 작업을하려면 어떻게해야합니까?
감사합니다, PaulH
실행 중 명령 줄은 무엇입니까? – Dennis
BTW - UNICODE를 사용하여 컴파일 중입니까?이 경우 라이브러리 작업의 wstring 버전을 사용해야합니다. – Dennis
@Dennis - 명령 행은'foo.exe -x 1,2, 4-7'입니다. 예, 유니 코드 플래그로 컴파일 중입니다. 'std :: wstring'으로 변경해도 결과는 변경되지 않습니다. 나는 같은 예외를 얻는다. – PaulH