【发布时间】:2016-07-05 03:12:25
【问题描述】:
给定以下程序
#include <boost/program_options.hpp>
#include <boost/shared_ptr.hpp>
#include <iostream>
using namespace std;
namespace po = boost::program_options;
int main(int argc, const char *argv[]) {
try {
po::options_description global("Global options");
global.add_options()
("x", po::value<int>()->required(), "The required x value");
po::variables_map args;
// shouldn't this throw an exception, when --x is not given?
po::store(po::parse_command_line(argc, argv, global), args);
// throws bad_any_cast
cout << "x=" << args["x"].as<int>() << endl;
} catch (const po::error& e) {
std::cerr << e.what() << endl;
}
cin.ignore();
return 0;
}
X 是必需的,但给定一个空的命令行 parse_command_line 不会引发异常。因此,当我通过args["x"] 访问x 时,它会崩溃。我得到了bad_any_cast。
【问题讨论】:
标签: c++ boost command-line-arguments