c++ - boost 编程选项使我的应用程序崩溃

标签 c++ boost

为什么当我使用此命令行时会崩溃:“program -p 1”而不是“program --p 1”

我用 VS 2008 编译它并使用 boost 1.51。

options_description desc("XXX");
desc.add_options()("p", value<std::string>(), "pi")
    ("s", value<std::string>(), "es");

std::cout << desc << std::endl;

variables_map vm;
store(parse_command_line(argc, argv, desc), vm);
notify(vm);
if (vm.count("p"))
    cout << "p is: " << vm["p"].as<string>() << endl;

if (vm.count("s"))
    cout << "s is: " << vm["s"].as<string>() << endl;

最佳答案

Boost 程序选项以-- 作为默认选项起始字符序列。如果您希望“单字母” 选项以单个 - 字符开头,则需要指定

desc.add_options()("p,p", value<std::string>(), "pi")

我猜程序崩溃发生在您显示的代码行之后的某处。您应该调试(或使用进一步的 cout 语句)来更准确地确定崩溃点。

关于c++ - boost 编程选项使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333844/

相关文章:

c++ - 键盘记录器不会在没有控制台的情况下记录击键

c++ - 明确检查 boost::log 过滤器?

c++ - Boost - shared_mutex 必须是同一个实例吗?

c++ - Boost chrono run_timer 未定义引用

c++ - 安装 Boost C++ 时遇到问题

C++:尝试 Hook 消息框并更改其位置

c++ - 如何为性能设计对象

c++ - 有没有办法将 boost 信号直接连接到另一个信号?

c++ - 在线程退出时重生线程

c++ - 基于 X.XX 版内核构建的 C++ Linux 应用程序能否在早期版本上运行?