エンドポイント エントリのリストを含む構成ファイルがあります。各エントリには [endpt/n] (n 番目のエンドポイント) という見出しが付いており、MAC アドレスと IP アドレスで構成されています。boost::program_options を使用してアドレスを文字列として読み取り、結果を 2 つのベクトルに push_back したいと思います。program_options のドキュメントを調べましたが、探しているものが見つかりませんでした... エンドポイント エントリの例を次に示します。
[endpt/2]
mac=ff-22-b6-33-91-3E
ip=133.22.32.222
各エンドポイントの MAC および IP オプションを boost::options_description に追加するために現在使用しているコードは次のとおりです。
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 アドレスの空のベクトルを宣言し、boost がそれらを読み取るときにオプションをそれらに push_back したいと思います。私はBoostを初めて使用するので、リストを読むためのより良い方法に関する提案やその他の助けをいただければ幸いです. ありがとう!