草庐IT

boost-pool

全部标签

c++ - boost::asio 如何以正确的方式读取完整缓冲区?

我正在学习boost::asio,现在对读取完整缓冲区的正确方法感到困惑。例如,当建立连接时,我想用下一种方式读取uint32_t:std::uint32_tsize;size_tlen=m_socket.read_some(buffer(&size,sizeof(std::uint32_t)));如您所见,我设置了缓冲区大小。在其他情况下,我在read_some数据上收到了带有长度的len。所以主要问题是:boost::asio是否保证如果我在调用时设置了所需的缓冲区长度,就会读取uint32_t的所有4个字节缓冲区?或者如果不能保证——我如何才能读取完整的缓冲区?(所有4个字节)

c++ - c++ Boost循环遍历模型的维度::点

我想知道是否有一种方法可以遍历boost点模型的维度。我正在尝试创建一个函数来对两个自定义点进行计算,具有可定义的维数。换句话说,每个点的维数将匹配,但它们不会是一个常量值。我想在每个维度上做相同的操作,所以我需要做一个循环来实现这一点。我想要做的事情的一个例子是:for(std::size_tdim=0;dim();//dostufftodset(d);}我知道这行不通,因为d不是编译时常量。谢谢! 最佳答案 作为替代方法,我认为您应该能够将BoostGeometry点模型调整为Fusion序列。LiveOnColiru#incl

c++ - 在 boost :multiprecision 中定义多精度 pi

我在boost::multiprecision中需要任意(但固定)精度的pi(3.1415...)。boost::math::constants中的常量最多只能定义固定位数,如thisanswer中指出的那样,所以我需要自己计算。因为我经常使用这个数字并且有很多数字,所以我想在运行时只计算一次。拥有它的简单而快速的方法是什么?我想用typedefnumber>mpfloat;//PRECISIONiscompiletime.constintPI=atan(mpfloat(1))*4;但我不确定这是不是它的常见习语。 最佳答案 在c+

c++ - boost::asio::io_service 在 win_mutex 锁中崩溃

我一直在使用boost::asio时遇到问题,其中使用全局io_service实例创建的计时器和/或套接字在构造期间崩溃。发生崩溃的系统如下:Windows7适用于Windows桌面的VisualStudio2013Express;v12.0.31101.00更新4Boost1.57,动态链接,使用多线程编译,例如boost_thread-vc120-mt-gd-1_57.dll我已经能够在以下简化代码中重现该问题://文件global_io_service.h#ifndefINCLUDED_GLOBAL_IO_SERVICE_H#defineINCLUDED_GLOBAL_IO_SE

python - 如何使用 boost.python 将预填充的 "unsigned char*"缓冲区传递给 C++ 方法?

我有一个C++类,它有一个成员函数,它接受一个unsignedchar*缓冲区和一个unsignedint长度作为参数并对它们进行操作。我已经用Boost::Python包装了这个类,并希望将一个预填充的缓冲区从Python脚本传递给这个类。Python端缓冲区是使用struct.pack创建的。我不知道如何使参数类型匹配并不断收到Boost.Python.ArgumentError。include/Example.h#ifndefEXAMPLECLASS_H_#defineEXAMPLECLASS_H_#includeclassExampleClass{public:ExampleC

c++ - boost::spirit 解析为 fusion 适应结构可选但独占

如果有一个结构:structrecord{std::stringtype;std::stringdelimiter;uint32_tlength;std::stringname;record(){type="";delimiter="";length=0;name="";}};使用boost::fusion和以下语法进行改编:structrecord_parser:qi::grammar{record_parser():record_parser::base_type(start){usingqi::lit;usingqi::uint_;usingqi::lexeme;usingasc

c++ - 使用 boost::program_options 禁止无符号值的负参数

假设我有一个程序使用boost::program_options来解析命令行参数,其中一个有一个unsigned值:#include#includenamespacepo=boost::program_options;intmain(intargc,char*argv[]){unsignednum;po::options_descriptiondesc;desc.add_options()("num,n",po::value(&num),"Non-negativenumber");po::variables_mapvm;po::store(po::parse_command_line(

c++ - Boost.Hana 中是否有与 Boost.Fusion 中的 View 概念等效的概念?

我尝试使用hana::for_each迭代用户定义的结构,并注意到它被复制/移动,而Boost.Fusion允许您迭代在原始结构上。我没有在Boost.Hana中找到任何类似于Boost.Fusion的View概念。如何将转换应用于序列而不每次都复制/移动它们?#include#includestructFoo{Foo()=default;Foo(constFoo&){std::cout更新:我尝试使用hana::transform将std::ref应用于成员,但是Struct不是Functior,所以transform不适用于这种情况。我能够使用hana::accessors实现所需

c++ - 将 boost ptime 从本地时间转换为 UTC

我有一个boost::posix_time::ptime对象(Boostv1.60),它包含系统时区中的日期和时间信息。我需要将其转换为UTC格式的unix时间戳。time_tconvertLocalPtimeToTimestamp(constboost::posix_time::ptime&pt){usingnamespaceboost::local_time;staticconsttime_tt_null=0;staticstructtm*tm_local=localtime(&t_null);statictime_zone_ptrzone(newposix_time_zone(t

c++ - 使用 boost asio 捕捉 Ctrl-C

我正在尝试在应用程序中捕获Ctrl-C,如下面的MWE所示#include#includevoidhandler(constboost::system::error_code&error,intsignal_number){std::cout>choice;}}不幸的是,当我按下Ctrl+C时,handler()没有被调用。相反,循环不再等待用户输入,如下所示:c:\tmp>CtrlC.exePressakey:dPressakey:ePressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressa