草庐IT

Boost-asio

全部标签

c++ - 是否允许递归 boost spirit 语法?

我正准备为一种类似mathematica的语言编写一个解析器,并且发现有时调用我的spirit语法来解析表达式的子部分会很好。即如果我要解析a+b*c+d在查询'+'符号时,在'b*c'部分调用parse()会很方便。在使用我的语法的相同实例时可以这样做吗?(语法参数将是'*this')虽然我还不确定这是否是完成此特定任务的最佳方法,但我发现这个问题很有趣,因为我在文档中找不到任何内容。如果我使用这种技术,显然我不应该依赖类局部变量或全局变量。但我想知道它是否主要是spirit设计所允许的。编辑:我的语法实例如下所示:classMyGrammar:publicboost::spirit

C++ boost : Split function is_any_of()

我正在尝试在以下函数中使用boost/algorithm/string.hpp中提供的split()函数:vectorsplitString(stringinput,stringpivot){//Pivot:e.g.,"##"vectorsplitInput;//Vectorwherethestringissplitandstoredsplit(splitInput,input,is_any_of(pivot),token_compress_on);//SplitthestringreturnsplitInput;}下面的调用:stringhello="Hieafds##addgaeg

c++ - 否定 boost 范围滤波适配器

是否有可能/可以实现否定boost过滤适配器,例如std::vectorv={1,2,3,4,5};for(autoi:v|!filtered(is_even))std::cout而不是在lambda表达式中进行取反?动机:我经常使用过滤函数和lambda函数,但是当我不止一次使用过滤器时,我通常会将其重构为自定义过滤器,例如for(autoi:v|even)//note:myfiltersaremorecomplexthaneven.std::cout现在,当我需要否定时,我正在为它们构建一个自定义过滤器,例如for(autoi:v|not_even)std::cout但我会发现能够

c++ - 十进制值:cout << dec << boost::this_thread::get_id()

是否可以用十进制或八进制格式计算thread::id?std::cout我总是得到十六进制,例如0xdf08。 最佳答案 您应该能够使用标准I/O操纵器指定您想要的输出格式:#include//...std::cout但是,请注意thread::id不需要是数字。此外,它可能是一个数字,但可能以不同于将该数字插入std::cout的方式打印到标准输出。.C++11标准规范operator的重载接受std::thread::id(我假设它的行为类似于Boost对boost::thread::it的对应重载),说:[...]Insert

c++ - 使用 Boost Program Options 解析任意字符串

我想在我的程序中实现类似命令行的界面。所以我收到的字符串遵循正常的命令行语法(例如“-Gfoo-dpbar--help”)。由于我不想再次实现解析器,所以我想使用Boost。问题是:如何将字符串传递给Boost程序选项而不是argCount和argValues的组合。我是否需要先将文本转换为数字(argCount)和char*数组(argValues)才能完成?如果是……有没有简单的方法来做到这一点?提前致谢。 最佳答案 一种方法是标记化std::string进入std::vector,然后将结果传递给Boost.ProgramOp

c++ - 为什么 boost::any 禁止转发 const&&?

相关代码如下://PerfectforwardingofValueTypetemplateany(ValueType&&value,typenameboost::disable_if>::type*=0//disableifvaluehastype`any&`,typenameboost::disable_if>::type*=0)//disableifvaluehastype`constValueType&&`:content(newholder::type>(static_cast(value))){}据我所知,可以使用复制构造函数从const&&构造。我使用boost1.55.0

c++ - 为什么要使用 std::mutex 而不是 boost::shared_mutex?

我的理解是:std::mutex会阻塞其他线程,无论它们是想读还是写,而boost::shared_mutex将允许多次读取。所以我的问题是,我是否应该总是更喜欢boost::shared_mutex而不是普通的std::mutex以允许并行读取的可能性?使用普通的std::mutex感觉就像我在否认一些可能的读取吞吐量......? 最佳答案 我不能说出它们两者之间的性能,但我的猜测是,由于额外的逻辑,boost::shared_mutex可能会更慢。除此之外,根据您拥有的读者数量,您可能会阻塞写入线程的时间比您希望的要长,因为它

c++ - Boost::graph Dijkstra 和自定义对象和属性

我想使用boost的dijkstra算法(因为我在程序的其他部分使用了boost)。我遇到的问题是将自定义对象(我相信它们被称为property)添加到adjacency_list。本质上,我有一个自定义边类,它维护有关边和通过它连接的顶点的各种信息。我想用adjaceny_list所需的边缘属性存储我的自定义数据对象我已经成功实现了boostprovides的玩具示例.我尝试使用自定义属性无济于事(boostexample,boostproperties)。我可以将我的VEdge数据结构封装在结构或其他东西中,我只需要能够检索它。但是我一直无法弄清楚如何将我的自定义数据结构包含到bo

c++ - boost::read_graphviz - 如何读出属性?

我正在尝试从GraphvizDOT文件中读取图表。我对Vertex的两个属性感兴趣——它的id和peripheries。A还想加载图形标签。我的代码是这样的:structDotVertex{std::stringname;intperipheries;};structDotEdge{std::stringlabel;};typedefboost::adjacency_listgraph_t;graph_tgraphviz;boost::dynamic_propertiesdp;dp.property("node_id",boost::get(&DotVertex::name,graph

c++ - 使用 boost 几何检查两条线是否有交点

是否可以使用boost::geometry来检查两条线段(每条线段由2D中的两个点给出)是否相互相交?如果这是可能的,boost::geometry是否也允许检查特殊情况,例如另一条线上只有一个点(数字上),或者两条线相等? 最佳答案 如果您专门谈论Boost.GeometryAPI,那当然是可能的。你的代码应该大致如下所示#include#includetypedefboost::geometry::model::segmentSegment;SegmentAB(Point(x1,y1),Point(x2,y2));Segment