我的代码崩溃了:
if(argc<2)
{
printf("Too few arguments\n");
}
else if(argc>=2)
{
namespace po = boost::program_options;
po::options_description desc("Options");
desc.add_options()
("c")
("d")
("filename", po::value<string>());
po::variables_map vm;
po::store(po::parse_command_line(argc,argv,desc),vm);
po::notify(vm);
if(vm.count("c"))
{
// option c
}
else if(vm.count("d"))
{
// option d
}
}
调试错误:此应用程序已请求运行时终止 它以通常的方式......
我希望我的程序在它们之后有选项-c和-d以及可选的文件名。如何add_options进入options_description,接下来如何检查我是否有选项-c,-d以及我是否有文件名作为命令行参数?
我已经从boost网站上阅读了关于boost / program_options的教程,但我无法知道该怎么做。
答案 0 :(得分:1)
上面没有为我编译(提升1_55_0)。
我修好并完成了它:
#include <boost/program_options.hpp>
#include <boost/program_options/options_description.hpp>
#include <iostream>
int main(int argc, char** argv)
{
if(argc<2)
{
printf("Too few arguments\n");
}
else
{
namespace po = boost::program_options;
po::options_description desc("Options");
desc.add_options()
("c", "")
("d", "")
("filename", po::value<std::string>()->default_value(""));
po::variables_map vm;
po::store(po::parse_command_line(argc,argv,desc),vm);
po::notify(vm);
std::cout << "c parsed: " << vm.count("c") << "\n";
std::cout << "d parsed: " << vm.count("d") << "\n";
std::cout << "filename: '" << boost::any_cast<std::string>(vm["filename"].value()) << "'\n";
}
}
用例如它打印--c --filename blablabla.txt
c parsed: 1
d parsed: 0
filename: 'blablabla.txt'