-2
我试图用boost来解析命令行参数。这里是我的代码(我只包括我需要帮助的部分):用boost.program_options分析命令行参数 - C++
#include <iostream>
#include <iterator>
#include <boost/program_options.hpp>
using std::cerr;
using std::cout;
using std::endl;
namespace po = boost::program_options;
try {
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<double>(), "set compression level");
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 0;
}
if (vm.count("compression")) {
cout << "Compression level was set to "
<< vm["compression"].as<double>() << ".\n";
} else {
cout << "Compression level was not set.\n";
}
}
catch(exception& e) {
cerr << "error: " << e.what() << "\n";
return 1;
}
catch(...) {
cerr << "Exception of unknown type!\n";
}
我有我的主要功能设置为:
main(int argc, char const *argv[])
但是,我下面https://github.com/boostorg/program_options/blob/develop/example/first.cpp包含这些参数的代码:
int main(int ac, char* av[])
当我comile,它吐出了这一点,我完全失去了:
请不要发布文字的图像。相反,将文本*作为文本*复制粘贴到问题中。 –
要么只是改变你的主要功能为“int main(int ac,char * av [])”或找到每个“ac”出现的地方并将其更改为“argc”,同样将“av”更改为“argv”,您应该很好去 – systemcpro
至于参数的名称,它们并不重要。 'argc'和'argv'只是两个常用的名字,缩写'ac'和'av'也是。如果你愿意,你可以将它们命名为“foo”和“bar”。 –