我强烈推荐Boost.Program 选项用于 C++ 命令行参数处理。像这样的东西可能有点矫枉过正,但对于稍微复杂一点的东西,Boost.Program 选项库的代码更少,编写后更容易理解,并且可以让你做一些花哨的事情,比如从配置文件或环境变量中获取参数,或在命令行上传递,几乎没有工作。
大致如下(未经测试)的东西应该适合你:
namespace po = boost::program_options;
int main() {
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("yes", "get down")
("no", "get funky")
;
po:variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("yes")) {
// get down
} else if (vm.count("no")) {
// get funky
}
}
教程页面提供了许多其他示例,这些示例表明添加额外的、更复杂的命令行参数几乎没有任何作用。
请注意,默认情况下 C++ 中不包含 boost,但添加它通常不会太难。Boost 是所有 C++ 程序员都需要了解的一组库之一。但是,请注意,如果您仍在学习 C++,这可能是矫枉过正。