엔드 포인트 항목 목록을 포함하는 구성 파일이 있습니다. 각 항목은 [endpt/n] (n 번째 끝점)이라는 제목으로 레이블되며 MAC 및 IP 주소로 구성됩니다. boost :: program_options를 사용하여 주소를 문자열로 읽고 push_back을 두 벡터에 출력하고 싶습니다. 나는 program_options 문서를 검토 한 결과,하지만 난 여기에 엔드 포인트 항목의 예를 위해 ... 찾고있어 무엇을 찾을 수 없어 : 여기boost :: program_options 및 push_back을 std :: vector에 읽으시겠습니까?
[endpt/2]
mac=ff-22-b6-33-91-3E
ip=133.22.32.222
내가 현재 사용하고 코드입니다 부스트 :: options_description 각 엔드 포인트의 MAC 및 IP 옵션을 추가합니다 :
std::vector<std::string> mac(NUM_ENDPTS);
std::vector<std::string> ip(NUM_ENDPTS);
for(int e = 0; e < NUM_ENDPTS; e++)
{
//convert endpoint 'e' to a string representing endpoint heading
std::stringstream tmp; tmp.clear(); tmp.str(""); tmp << e;
std::string strEndpt = tmp.str();
std::string heading = "endpt/"+strEndpt;
cfig_file_options.add_options()
((heading+".mac").c_str(), po::value<std::string>(&mac[e]), ("ENDPT MAC")
((heading+".ip").c_str(), po::value<std::string>(&ip[e]), ("ENDPT IP")
;
}
po::variables_map vm;
po::store(po::parse_config_file(config_stream, cfig_file_options), vm);
po::notify(vm);
이 코드는 잘 작동하지만 몇 가지 이유를 들어, 나는 MAC 및 IP 주소,와 push_back 빈 벡터를 선언하고 싶습니다 부스트가 옵션을 읽습니다. 나는 Boost에 익숙하지 않기 때문에 목록을 읽는 더 좋은 방법에 대한 제안이나 다른 도움이 크게 감사 할 것입니다. 감사!
응답 해 주셔서 감사합니다. 여전히 문제가 있습니다 ... po :: value'를'po :: vector'로 대체하면'error : 'vector'는 'po'의 멤버가 아닙니다. (나는 OP에 그것을 포함시키지 않았지만'namespace po = boost :: program_options;') 이것을 사용하는 것이 버전 문제 일 수 있습니까? Boost 1.40을 사용하고 있습니다 ... – tpm1510
아니요, 버전 문제가 아닙니다. 내 코드가 깨졌습니다. 나는 그것을 바로 잡았다. 또한'options_description'은 v.1.41.1에서도 첫 번째 매개 변수에 대해'std :: string'을 사용하지 않는다는 점이 흥미 롭습니다. – rcollyer
@ tpm1510, 코드가 작동합니까? – rcollyer