у меня есть CFG файл как следующее:Прочитайте один параметр из конфигурационного файла, в котором есть несколько параметров, с усилением program_options
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
в том числе, как много линий в качестве параметров, которые я пишу в конфигурационном файле, а затем принять значение из параметра, который я хочу.
Thank you Geoffroy. Это было именно то, что я искал, и теперь это работает. – user2136529
@ user2136529 Добро пожаловать :) Примите ответ, затем – Geoffroy