boost 에서 program_options 사용할때 조건부 config 읽기
글쓴이: jinserk / 작성시간: 목, 2009/10/15 - 12:31오후
예를 들어서 다음과 같은 config 파일이 있다고 할때,
num = 2 [a0] x = 0 y = 1 z = 2 [a1] x = 0 y = 1 z = 2
num = 3 이면 [a0] [a1] [a2] 등으로 그룹 갯수가 늘어나는 config 파일이라고 가정할때
boost::program_options 로 이런 파일을 어떻게 읽을 수 있을지 궁금합니다.
boost::program_options 에서는 options_description 내에 지정하지 않은 옵션들이 config 파일의
옵션에 있는 경우 unknown option exception 을 발생시키더군요.
궁리끝에 이 exception 을 이용하면 되겠다 싶어 다음과 같이 코딩을 해봤습니다.
fstream file("config.txt", fstream::in); boost::program_options::options_description desc; boost::program_options::variables_map vm; try { desc.add_options() ("num", boost::program_options::value<int>(&num), "number") ; boost::program_options::store(boost::program_options::parse_config_file(file, desc), vm): } catch (exception& e) { int num; if (vm.count("num")) { num = vm["num"].as<int>(); for (int i = 0; i < num; i++) // desc options adding store again ....... }
뭐 이런식으로 진행해보려고 했는데, store 할때 exception 이 발생하면 vm 에 해당 값이 저장이 안되더군요.
어떻게 하면 좋을지 조언 부탁드립니다.
감사합니다.
Forums:
댓글 달기