我有一个 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;
}
...
但是,当我尝试执行一个泛型方法时,我只想读取从调用中给出的一个参数,我解析错误。
例如,我想读取第二个参数,所以我写了这个:
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:未知选项参数 1
所以我的问题是,是否可以从文件中仅读取一个参数,或者是否有必要解析所有参数,boost_program
包括options.add_option
与我在配置文件中写入的参数一样多的行,然后从我想要的参数中获取值。