私は次のようなcfgファイルを持っています:
parameter1="hello"
parameter2=22
parameter3=12
すべてのパラメータを読み取るために使用boost_program
すると、次のコードで正常に機能します。
po::options_description options("Options");
options.add_options()
("help,h", "produce help message")
("parameter1", po::value<string>(¶meter1)->default_value("bye"),
"parameter1")
("parameter2", po::value<int>(¶meter2)->default_value(2),
"parameter2")
("parameter3", po::value<int>(¶meter3)->default_value(4),
"parameter3");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, options), vm);
notify(vm);
try
{
po::store(po::parse_config_file< char >(filePath, options), vm);
}
catch (const std::exception& e)
{
std::cerr << "Error parsing file: " << filePath << ": " << e.what() << std::endl;
}
..。
しかし、呼び出しから与えられた1つのパラメーターを読み取りたいだけのジェネリックメソッドを実行しようとすると、エラー解析が発生します。
たとえば、2番目のパラメータを読み取りたいので、次のように記述します。
const char parameter_string = "parameter2";
int default = 30;
int parameter;
getparameter(parameter_string,parameter,default);
そして、これが今回私が持っているものであるメソッドgetsparameterに行きます:..。
po::options_description options("Options");
options.add_options()
("help,h", "produce help message")
(parameter_string, po::value<int>(¶meter)->default_value(default),
"reading parameter");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, options), vm);
notify(vm);
しかし、エラーは次のとおりです。
ファイルの解析エラー:file.cfg:不明なオプションparameter1
したがって、私の質問は、ファイルから1つのパラメーターのみを読み取ることが可能かどうか、または構成ファイルに書き込んだパラメーターと同じ数の行を含めてすべてのパラメーターを解析し、必要なパラメーターから値を取得する必要があるかどうかですboost_program
。options.add_option