标签: boost-program-options

在Boost :: Program_Options中,如何设置wstring的默认值?

我的代码不起作用:

wstring config_file;
// Declare a group of options that will be 
// allowed only on command line
po::options_description generic("Generic options");
generic.add_options()
    ("help,h", "produce help message")
    ("config,c", po::wvalue<wstring>(&config_file)->default_value(L"DXDrv.cfg"), "name of a file of a configuration.")
    ;
Run Code Online (Sandbox Code Playgroud)

编译失败,错误:

d:\ repo\a4x_ext\minidxdriver\testapp\configparser\boost\lexical_cast.hpp(1096):错误C2039 :: 'setg'不是'boost::detail::lexical_stream_limited_src<CharT,Base,Traits>'

c++ boost boost-program-options

6
推荐指数
1
解决办法
3876
查看次数

boost :: program_options给出了malloc错误

我有以下玩具程序,它在OSX 10.6上给出了MacPorts gcc的错误

#include <boost/program_options.hpp>
namespace po = boost::program_options;

#include <iostream>
using namespace std;

int main(int ac, char* av[])
{
        po::options_description desc("Allowed options");
        desc.add_options()  ("help", "produce help message")  ;

        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;
        }
        cout << "Program continues\n";
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在MacPorts上安装了1.52版.我编译程序为

g++ a.cpp -lboost_program_options-mt -L/opt/local/lib -g -O0
Run Code Online (Sandbox Code Playgroud)

编译好:

$ ./a.out
Program continues
Run Code Online (Sandbox Code Playgroud)

但它无法打印帮助信息:

$ ./a.out --help
Allowed options:
a.out(40110) malloc: *** error for object 0x7fff70ca3500: pointer …
Run Code Online (Sandbox Code Playgroud)

malloc gcc boost macports boost-program-options

6
推荐指数
1
解决办法
621
查看次数

boost :: program_options:如何忽略未知参数?

boost::program_options库中,我无法理解如何允许用户传递尚未添加的参数add_options().
我希望它被忽略,而不是终止程序.

c++ boost boost-program-options

6
推荐指数
2
解决办法
2092
查看次数

如何为boost :: program_options的位置选项添加描述?

我想创建一个位置,列表程序选项,boost_program_options不允许命名程序选项(如--files).

我有以下代码片段:

#include <boost/program_options.hpp>
#include <iostream>
#include <string>
#include <vector>

namespace po = boost::program_options;

int main(int argc, const char* argv[]) {
  po::options_description desc("Allowed options");
  desc.add_options()("help", "produce help message")
  ( "files", po::value<std::vector<std::string>>()->required(), "list of files");

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

  po::variables_map vm;
  try {
    po::store(po::command_line_parser(argc, argv).options(desc).positional(pos).run(), vm);
    po::notify(vm);
  } catch(const po::error& e) {
    std::cerr << "Couldn't parse command line arguments properly:\n";
    std::cerr << e.what() << '\n' << '\n';
    std::cerr << desc << '\n';
    return 1;
  }

  if(vm.count("help") || …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-program-options c++11

6
推荐指数
1
解决办法
2968
查看次数

更好地处理boost :: program_options中的丢失/错误键

当下面的呼叫失败时,有没有办法知道涉及哪个密钥?

boost::program_options::variables_map vm;
...
int foo_bar = vm["some_key"].as<int>();
Run Code Online (Sandbox Code Playgroud)

如果地图中缺少密钥,或者无法转换为int,我会得到一个相当无法提供信息的bad_any_cast,我无法知道以下任何内容:

  • 关键的关键
  • 存储的值,或者即使它存在.
  • 涉及的类型

我找不到任何解决方案,不涉及修改boost标头或在try..catch块中包装对上面的每个调用.我认为这是一个常见的问题,所以也许其他人知道更好的方法.

c++ boost boost-program-options boost-any

5
推荐指数
1
解决办法
726
查看次数

如何在不使用变量的情况下在Boost程序选项中启用其他选项的选项?

我使用程序选项来解析我的应用程序的命令行选项.

我有几个选项,如-Ox,-Oy,-Oz,......我希望有一个超级选项-Oall,它可以启用Ox和Oy以及另一个启用Oz和Ow的-Osub.

有没有办法使用Boost程序选项?

首先,我想检查Oall的值,然后手动启用Ox和Oy,但是在解析之后无法编辑值.

我想避免使用变量来存储Ox,Oy的值,因为我可以有很多这些选项.

谢谢

c++ boost-program-options

5
推荐指数
1
解决办法
188
查看次数

提升计划选择权

有没有一种简单的方法来检查选项的参数是否在一组预定义的选择中?这里的"简单"意味着没有定义ad-hoc类.

假设我有选项--myoption必须有价值"myvalue1""myvalue2"

例如,在python中,optparse中的选项选项非常简单

c++ boost-program-options command-line-parsing

5
推荐指数
1
解决办法
1317
查看次数

boost :: program_options和ini文件中的多个部分

我正在尝试使用boost :: program_options来读取包含多个部分的ini文件:

[slave]
address=localhost
port=1111

[slave]
address=192.168.0.1
port=2222
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

提前致谢!

c++ boost-program-options

5
推荐指数
1
解决办法
3226
查看次数

使用Boost Program Options来解析任意字符串

我想在我的程序中实现类似命令行的接口.所以我收到的字符串遵循正常的命令行语法(例如"-G foo -dp bar --help").由于我不想再次实现解析器,我想使用Boost.

问题是:如何将字符串传递给Boost程序选项而不是argCount和argValues的组合.我是否需要先将文本转换为数字(argCount)和char*数组(argValues)才能完成?如果是的话...有一个简单的方法吗?

提前致谢.

c++ boost boost-program-options

5
推荐指数
1
解决办法
5100
查看次数

提升程序选项:位置和多首选项

boost::program_options当允许多音和位置选项时,如何解析或管理输入?

例如:

./app.sample pos1 --multitokenoption a b c d pos2 
Run Code Online (Sandbox Code Playgroud)

multitokenoption完成和位置选项何时开始时,助推器如何知道?

显然,最合乎逻辑的允许行为是多声道选项必须作为最后一个参数出现,就像函数参数中的默认参数一样,但是文档没有说明它.

c++ boost-program-options

5
推荐指数
1
解决办法
1862
查看次数