boost :: program_options和位置参数的问题

迈克尔·戈德施泰因

gcc 4.7.2 /提升1.58.0

我正在尝试看起来像这样的代码,这些代码几乎全部取自文档中的示例:

namespace po = boost::program_options;

po::options_description desc("Allowed options");

desc.add_options()
    ("help","produce help message")
;

po::positional_options_description pos_desc;

pos_desc.add("input-file",-1);

po::variables_map vm;

// The following line throws an std::logic_error
//  what() - error_with_option_name::m_option_style can only be one of
//           [0, allow_dash_for_short, allow_slash_for_short, allow_long_disguise
//            or allow_long]
po::store(po::command_line_parser(argc,argv).options(desc)
                                            .positional(pos_desc)
                                            .run(),
          vm);

...

一个logic_error例外得到投掷在被评论,当我执行应用程序指示的线路:

myapp filename1

它显示在不带(位置)参数的情况下运行时的用法。使用位置命令行参数时为什么会抛出?

SU3

您需要将“ input-file”参数添加到desc,然后再添加到pos_desc,而不仅仅是后面的。这是我通常做的一个例子。

namespace po = boost::program_options;

string fin_name;

try {
  po::options_description all_opt("Options");
  all_opt.add_options()
  ("help,h", "produce help message")
  ("input,i", po::value<string>(&fin_name),
   "input files with histograms")
  ;

  po::positional_options_description pos;
  pos.add("input",-1);

  po::variables_map vm;
  po::store(po::command_line_parser(argc, argv)
    .options(all_opt).positional(pos).run(), vm);
  if (argc == 1 || vm.count("help")) {
    cout << all_opt << endl;
    return 0;
  }
  po::notify(vm);
}
catch(exception& e) {
  cerr << "\033[31mError: " <<  e.what() <<"\033[0m"<< endl;
  return 1;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

boost :: program_options和位置参数的问题

来自分类Dev

boost :: program_options位置选项

来自分类Dev

boost :: program_options位置选项

来自分类Dev

RAII与boost boost :: program_options和options_description

来自分类Dev

RAII与boost boost :: program_options和options_description

来自分类Dev

当指定了意外的位置参数时,boost :: program_options不报告错误

来自分类Dev

用boost :: program_options解析前缀参数?

来自分类Dev

C ++:Boost program_options:多个参数列表

来自分类Dev

使用 boost::program_options 的不带破折号的参数

来自分类Dev

boost program_options如何工作?

来自分类Dev

boost :: program_options的链接错误

来自分类Dev

boost program_options 中的链接错误

来自分类Dev

boost::program_options 验证每个参数而不是每个参数类型?

来自分类Dev

如何避免在boost :: program_options中将位置选项指定为“常规”选项?

来自分类Dev

是否可以使用boost :: program_options捕获不带破折号的参数?

来自分类Dev

使用boost :: program_options禁止对无符号值使用负参数

来自分类Dev

在Windows中使用boost :: program_options从命令行参数读取Unicode字符

来自分类Dev

boost program_options:读入 3d 矢量作为命令行参数

来自分类Dev

C ++和boost program_options错误:“ desc”未命名类型

来自分类Dev

从boost :: program_options值输入un-ersure

来自分类Dev

Boost Program_Options抛出“字符转换失败”

来自分类Dev

如何使用boost :: program_options接受可选标志?

来自分类Dev

在名称空间的类中对枚举使用boost :: program_options

来自分类Dev

Disallow negative argument for unsigned value with boost::program_options

来自分类Dev

boost program_options中vector <string>选项的拆分值

来自分类Dev

在名称空间的类中对枚举使用boost :: program_options

来自分类Dev

Boost Program_Options 如何处理数组向量?

来自分类Dev

如何使用boost :: posix_time :: ptime获得boost :: program_options?

来自分类Dev

为什么boost :: any在boost :: program_options中表现出未定义的行为?

Related 相关文章

  1. 1

    boost :: program_options和位置参数的问题

  2. 2

    boost :: program_options位置选项

  3. 3

    boost :: program_options位置选项

  4. 4

    RAII与boost boost :: program_options和options_description

  5. 5

    RAII与boost boost :: program_options和options_description

  6. 6

    当指定了意外的位置参数时,boost :: program_options不报告错误

  7. 7

    用boost :: program_options解析前缀参数?

  8. 8

    C ++:Boost program_options:多个参数列表

  9. 9

    使用 boost::program_options 的不带破折号的参数

  10. 10

    boost program_options如何工作?

  11. 11

    boost :: program_options的链接错误

  12. 12

    boost program_options 中的链接错误

  13. 13

    boost::program_options 验证每个参数而不是每个参数类型?

  14. 14

    如何避免在boost :: program_options中将位置选项指定为“常规”选项?

  15. 15

    是否可以使用boost :: program_options捕获不带破折号的参数?

  16. 16

    使用boost :: program_options禁止对无符号值使用负参数

  17. 17

    在Windows中使用boost :: program_options从命令行参数读取Unicode字符

  18. 18

    boost program_options:读入 3d 矢量作为命令行参数

  19. 19

    C ++和boost program_options错误:“ desc”未命名类型

  20. 20

    从boost :: program_options值输入un-ersure

  21. 21

    Boost Program_Options抛出“字符转换失败”

  22. 22

    如何使用boost :: program_options接受可选标志?

  23. 23

    在名称空间的类中对枚举使用boost :: program_options

  24. 24

    Disallow negative argument for unsigned value with boost::program_options

  25. 25

    boost program_options中vector <string>选项的拆分值

  26. 26

    在名称空间的类中对枚举使用boost :: program_options

  27. 27

    Boost Program_Options 如何处理数组向量?

  28. 28

    如何使用boost :: posix_time :: ptime获得boost :: program_options?

  29. 29

    为什么boost :: any在boost :: program_options中表现出未定义的行为?

热门标签

归档