草庐IT

Boost-asio

全部标签

c++ - 我可以复制构造带有错误信息的 boost::exception 吗?

考虑以下使用boost异常类的代码:classexception:virtualpublicboost::exception{//...};templateclassexception_impl:virtualpublicstd::exception,publicExc{public:exception_impl(constExc&exc):Exc(exc){}virtualconstchar*what()constthrow(){return"blah";}};(实际上这段代码更复杂。例如,exception_impl仅从std::exception派生,如果后者还不是直接或间接基类

c++ - 具有多个分隔符的字符串标记器,包括没有 Boost 的分隔符

我需要在C++中创建字符串解析器。我尝试使用vectorTokenize(conststring&strInput,conststring&strDelims){vectorvS;stringstrOne=strInput;stringdelimiters=strDelims;intstartpos=0;intpos=strOne.find_first_of(delimiters,startpos);while(string::npos!=pos||string::npos!=startpos){if(strOne.substr(startpos,pos-startpos)!="")v

c++ - 使用 Boost::Asio 进行双向 TCP 通信的程序结构

首先,我希望我的问题是有道理的,甚至是可能的!从我读过的关于TCP套接字和Boost::ASIO的内容来看,我认为应该是这样。我要做的是设置两台机器,并在它们之间通过TCP建立一个有效的双向读/写链路。任何一方都应该能够发送一些数据供另一方使用。关于TCP(/IP?)的第一个令人困惑的部分是它需要这种客户端/服务器模型。但是,阅读表明任何一方都可以写作或阅读,所以我还没有完全气馁。我不介意建立任意一方作为客户端,另一方作为服务器。在我的申请中,这可以提前协商,我不关心。不幸的是,我遇到的所有示例似乎都集中在连接到服务器的客户端上,然后服务器立即将一些数据发送回。但我希望客户端也能够写入

c++ - 创建自己的 Boost::Archive 实现

我目前正在创建一个使用Boost::Serialization并且需要实现自己的Boost::Archive的概念,因为必须以某种方式对数据进行序列化。文档中有关于实现自定义存档的文档:http://www.boost.org/doc/libs/1_44_0/libs/serialization/doc/index.html但我很好奇网络上是否还有其他(现实生活)示例。我找不到任何东西。也许有人可以指出我的来源或文章。 最佳答案 示例实现日志归档:http://www.boost.org/doc/libs/1_44_0/libs/s

c++ - 将线性代数库与 Boost::Units 相结合

我正在做大量的科学编程,并在Boost.Units方面取得了非常好的经验,它提供了数量的编译时维度分析(即用单位标记数量,从而通过经典物理维度分析捕获许多错误)并使用Eigen2进行线性代数。但是,Eigen没有单位的概念,虽然您可以在矩阵中为Eigen设置标量,但它期望两个量的乘积产生相同的类型,这对于单位来说显然是不正确的。比如这样的代码:usingboost::units::quantity;namespacesi=boost::units::si;Eigen::Matrix,2,1>meter_vector;quantitynorm=meter_vector.squaredNo

c++ - 使用 std::is_assignable、boost::function 和 nullptr 时出现意外结果

以下表达式使用is_assignable返回true使用gcc4.7和boost1.49时:typedefboost::functionF;std::is_assignable::value但是,此代码无法编译:boost::functionf;f=nullptr;产生这些错误信息:Infileincludedfromc:\mingw\bin\../lib/gcc/i686-pc-mingw32/4.7.0/../../../../include/boost/function/detail/maybe_include.hpp:13:0,fromc:\mingw\bin\../lib/g

c++ - C++ boost 二进制序列化库是否向后/向前兼容?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:BoostSerializationLibraryupgrade我正在尝试为C++应用程序寻找序列化解决方案。我真的很想能够使用boost二进制序列化。如果我要使用旧版本的boost二进制序列化库来序列化一个对象,那么使用新版本的boost库的应用程序是否总是能够读取它?反过来呢?boost对序列化库的向后/兼容性的理念是什么? 最佳答案 他们通过增加标题中的版本来做到这一点。所以是的,从某种意义上说,它是兼容的,如果您尝试读取使用不兼容版本序列化为1.4

c++ - boost::spirit 从语法中组合语法

我已经弄清楚了如何使用精神——也就是说,我写了一个中等复杂的语法。我总是采用扩展程序的方法——一次一个子系统。我已经为一个复杂模型编写了数据结构,它在最高级别有4种类型。我想使用grammarcomposedfromrulesapproach一次解析一种类型的顶级类型——即,我想用一种顶级语法编​​写4个语法。如果这是可能的(我开始怀疑),有人可以发布一个片段或对执行此操作的项目的引用。具有50多个(可能更多)规则(用于正确错误处理)的顶级语法听起来并不有趣(TMP代码易变/编译缓慢,并提供无用的错误消息)。 最佳答案 从一个实际的

c++ - Boost.Asio : The difference between async_read and async_receive

async_read和有什么区别?和async_receive? 最佳答案 async_receive是一个仅接收到缓冲区的函数,但可能无法接收您要求的数量。(它会相等或更少,永远不会更多。)但是,async_read将始终收到您要求的金额,如其所述:Thisfunctionisusedtoasynchronouslyreadacertainnumberofbytesofdatafromastream.Thefunctioncallalwaysreturnsimmediately.Theasynchronousoperationwi

c++ - boost::program_options :迭代并打印所有选项

我最近开始使用boost::program_options并发现它非常方便。也就是说,缺少一件事我无法以一种好的方式编写自己的代码:我想遍历boost::program_options::variables_map中收集的所有选项将它们输出到屏幕上。这应该成为一个方便的函数,我可以简单地调用它来列出所有设置的选项,而无需在添加新选项或每个程序时更新函数。我知道我可以检查和输出单个选项,但如上所述,这应该成为一个忽略实际选项的通用解决方案。我进一步知道我可以遍历variables_map的内容因为它只是一个扩展的std::map.然后我可以检查存储的boost::any中包含的类型。变量