我需要从boost::program_options::option_description
类中获取默认值。
我检查了源代码,看起来它同时存储了 asstd::string
和 as 的默认值boost::any
,但它存储在 private 中m_default_as_text
,因此我无法从那里提取此信息。
我能得到的只是这样的格式化参数
参数 (=10)
但我只想得到 10 个。
我也可以boost::any
通过调用value_semantic::apply_default
方法获得默认值
boost::any default_value;
opt_ptr->semantic()->apply_default(default_value)
但我不知道在boost::any_cast
迭代option_description
集合时要执行的确切类型,我只想打印它。
更新
namespace po = boost::program_options;
po::options_description descr("options");
descr.add_options()
("help,h", "produce help message")
("a", po::value<int>()->default_value(42));
for (auto opt: descr.options())
{
std::cout << opt->format_parameter() << std::endl;
}
在这里打印
参数 (=42)
我想在没有类型知识的情况下将 42 作为字符串。
有什么办法吗?