草庐IT

boost-program-options

全部标签

c++ - boost::program_options 如何重新加载一个值

我想从配置文件中重新加载一些值。我知道po::store不会更改存在于variables_map中的值。有没有替代方案可以替换值,即使它们已经存在?我尝试删除即将从variables_map重新加载的值,但是po::store无论如何都不会添加新值(即使旧值不能都可以访问)。 最佳答案 P3trus的解决方案涉及向下转换。这是必要的,因为variables_map重载了std::map::operator[]返回一个constvariable_value&(const防止重新分配)。但是在C++11中我们有std::map::at(

c++ - boost::signals2 插槽作为非静态函数成员?

我最近出于学习目的一直在玩弄boost::signals2,我想知道我是否可以将信号连接到位于类(就像我在Qt中所做的那样)。请考虑以下事项:classWorker{typedefboost::signals2::signalSendMessage;public:typedefSendMessage::slot_typeSendMessageSlotType;boost::signals2::connectionconnect(constSendMessageSlotType&slot){returnsend_message.connect(slot);}private:SendMes

c++ - 检查 boost 属性树中的值是树还是终端值

我一直在boost::property_tree(用于读取json)中寻找API,我可以用它来确定字段的值是树还是终端值。例如,我有一个json,其中foo的值可以是第一个block中所示的树或第二个block中所示的字符串。{"foo":{"n1":"v1","n2":"v2"}}{"foo":"bar"}我知道我们可以先检查get_child_optional。如果返回值为null,那么我们可以检查get_optional。但是有没有更好的方法/api来做到这一点? 最佳答案 试试这个:property_treept;...if

c++ - 如何使用 boost::asio 中的 'chunked' HTTP 传输协议(protocol)将文件写入套接字?

所以处理boostHTTPServer3example,我想修改connection::handle_read以支持发送正文和消息。但是,这样做的方法对我来说并不明显。我想写这样的东西:voidconnection::handle_read(constboost::system::error_code&e,std::size_tbytes_transferred){...if(result){boost::asio::async_write(socket_,reply.to_buffers(),strand_.wrap(boost::bind(&connection::write_bo

c++ - 使用简单的 Boost::Spirit 语法?

我无法使用语法,所以我简化了它,直到它只解析一个整数。仍然无法正常工作。语法如下:templatestructrangeGrammar:qi::grammar{rangeGrammar():rangeGrammar::base_type(number){usingqi::int_;usingqi::_1;usingqi::_val;number=int_[_val=_1];}qi::rulenumber;};它应该只解析一个整数(我知道我可以告诉解析函数使用int_作为语法,但我不想知道这个例子中有什么问题)。我的解析函数是:/*nisastd::stringprovidedbythe

c++ - Boost 调试和发布库是否相同?

我的项目使用boost-win-1.47-32bit-vs2010库。我目前正在Debug模式下运行我的应用程序,它似乎运行良好。现在我计划在Release模式下构建它,我也成功地做到了。但是我担心的是我使用相同的boost库来做到这一点。我从未构建过引导库,所以我不知道我使用的引导库是用于Debug模式还是Release模式。关于我如何找到的任何建议。我正在使用的引导库是否有可能在发布和Debug模式下运行,因为我在更改模式时没有收到任何错误?更新:例如相关文件夹中的每个文件似乎有两个版本libboost_thread-vc100-mt-1_47.liblibboost_thread

c++ - 是否可以使用包含 boost::variant 的 STL 容器并在变体类型本身中使用相同的容器类型?

这似乎是不可能的,但我还是想问问。我定义了一个boost::variant像这样:typedefboost::variantConfigVariant;稍后在我的代码中我定义了一个std::map像这样:std::mapmy_map;现在我希望能够拥有std::map里面的值my_map.例如,我想这样做:my_map[key1][key2]="helloworld";我认为这是不可能的原因是因为相应的变体定义看起来像这样:typedefboost::variantConfigVariant;既然不可能进行这样的类型定义,那么有什么办法可以解决这个问题吗?

c++ - boost spirit skipper - 编译时错误

我有以下代码:#include#include#include#includeBOOST_FUSION_DEFINE_STRUCT((),foo,(int,bar)(int,baz))templatestructparser:boost::spirit::qi::grammar{parser():parser::base_type(start){start%=boost::spirit::qi::int_>>boost::spirit::qi::int_;}boost::spirit::qi::rulestart;};intmain(){conststd::stringinput_da

c++ - 如何使用 boost::preprocessor 解压序列?

如何使用boost::preprocessor解压一个序列对?例如,我有一个序列如下(之间的逗号无关紧要)(int,x)(double,y)(float,z)or(int,x),(double,y),(float,z)or((int)(x))((double)(y))((float)(z))想转换成int,double,float和x,y,z通过使用macor之类的UNZIP(i,seq)其中i是索引。 最佳答案 (int,x,10)(double,y,20)(float,z,30)的解压缩,即元素之间没有逗号的序列。LIVEDEM

c++ - 普通默认可构造的 std::optional 和 std::variant

可以设计吗std::optional(当前std::experimental::optional)以这种方式,对于普通的默认可构造类型T对应std::optional也是默认可构造的吗?同样的问题重新阅读std::variant及其积分判别器。我自己的回答是:“不行,不能这么设计,因为如果对象有自动存储期,或者是非reinterpret_cast-ed,默认初始化时得到的它的整数鉴别器的值是不确定的-零初始化存储。”要求用户每次都进行值初始化在我看来是不允许的。 最佳答案 您的回答是正确的:不能。规范要求在默认构造时将其“初始化标志