草庐IT

BOOST_STRINGIZE

全部标签

c++ - Boost::asio socket - 如何在 'throw' 中创建 read_some "timeout"?

所以通常我们会做这样的事情socket.read_some(boost::asio::buffer(buffer,buffer_size));但是如何让它在读取还没有开始的情况下抛出异常比说333秒更长的时间? 最佳答案 您应该考虑使用async_read_some而不是read_some,因为它允许您在读取的同时启动一个新的后台计时器。然后,为您执行的每个新套接字创建一个新计时器:boost::asio::io_serviceio_service;time_t_timertimer(io_service);timer.expire

最简单的buck-boost-升压降压电路原理解析

buck-boost-升压降压电路在开关电源电路中,buck降压和boost的升压都是常用的基本电路。不过它们的功能单一,一个电路只能达到一个目的。那有没有可能把它们合在一起,就会得到既能升压又能降压的电路呢?于是我们将这两个电路串联移除掉多余的电容和电感,得到这个全新的电路。升压不难看出,想要实现升降压,就得用这两个开关来控制。为了方便观察,这里,开关用黄色和绿色来进行区别。当黄色开关处于长闭状态,此时就由绿色开关来控制电路。当绿色开关闭合,因为电流比较懒,会选择最近的路从正极流向负极,所以电流会这样流,电感上的能量慢慢增加。而当开关断开,电流失去了抄近路的机会,就会变成这样流,电源和电感就

c++ - 为 Android NDK 编译 Boost 库的子集

我的Android应用程序需要一个boost库,所以我设法编译了其中的大部分。但是当我尝试编译文件系统组件时,出现以下错误消息。gcc.compile.c++bin.v2/libs/filesystem/build/gcc-android4.4.3/release/link-static/runtime-link-static/threading-multi/v2/src/v2_operations.olibs\filesystem\v2\src\v2_operations.cpp:62:30:error:sys/statvfs.h:Nosuchfileordirectory我理解这是

c++ - 为什么在单例实现中清除 boost::scoped_ptr

我使用boost::scoped_ptr实现了一个简单的单例:templateclassSingleton:publicboost::noncopyable{public:staticT&instance(){boost::call_once(init,flag);return*t;}staticvoidinit(){t.reset(newT());}private:staticboost::scoped_ptrt;staticboost::once_flagflag;};templateboost::scoped_ptrSingleton::t(0);templateboost::o

c++ - 使用另一个构造一个具体的 boost::tuple 类型

给定:typedefboost::tupleTuple_Tn其中类型T1,...Tn都已定义,给定类型T_another,我想定义一个新的元组类型:typedefboost::tupleTuple_T_plus_1但这是我的问题:在我想定义它的地方,我只能访问类型Tuple_Tn和T_another。换句话说,是否可以仅根据Tuple_Tn和T_another来定义Tuple_T_plus_1? 最佳答案 我不确定Boost.Tuple中是否有这样的功能,也许Boost.Fusion会更适合您的需求。但是,如果您有一个支持C++11

c++ - 如何读取 Boost ASIO streambuf?

有没有办法在不删除字节的情况下从streambuf中读取?我正在从缓冲区读取“消息大小”字段以检查是否收到了整条消息。如果不是,我将发布另一个异步读取以获取它,但处理程序无法知道消息应该有多长-因为大小字段已被删除。感谢任何帮助!例如boost::asio::streambuf_buffer;voidonReceive(constboost::system::error_code&e,std::size_tbytesTransferred){if(e)return;if(_buffer.size()>0){//Partialmessagewaspreviouslyreceived,bu

c++ - Boost Asio - 使用 shared_ptr 处理解析器和套接字

我有一个类能够通过TCP发送消息。这里是简化的界面:classCommandScreenshot:publicCameraCommand{public:CommandScreenshot();~CommandScreenshot();voidDispatch(boost::shared_ptrio_service);private:voidresolve_handler(constboost::system::error_code&err,boost::asio::ip::tcp::resolver::iteratorendpoint_iterator);};如您所见,我有一个函数Di

c++ - 如何使用 boost::filesystem 检查文件是常规文件还是符号链接(symbolic link)?

我想检查字符串name是否指向我可以打开和读取的文件,因此它可以是常规文件或符号链接(symboliclink)。我第一次用这个:std::ifstreamin(name.c_str());if(!in.is_open()){//throwexception!}但是当name引用目录名称时它没有抛出异常。现在我正在使用这个:if(!fs::exists(name)||fs::is_directory(name)){//throwexception!}但如果它是目录的符号链接(symboliclink),它(大概)不会抛出异常。这也是同样的道理:if(!fs::is_regular_fi

c++ - 通过自定义语法使用 Boost Spirit 的流解析器

概要我想利用BoostSpirit的streamparserAPI以增量方式解析std::istream。但是,我找不到一个很好的例子来说明如何将它与基于迭代器的语法一起使用。从概念上讲,我的目标是解析无穷无尽的T类型的对象流。详情Qi中具有T类型属性和Sskipper的语法通常具有以下形式:templatestructgrammar:qi::grammar;如何在基于流的API中使用这样的语法?具体来说,我对流API的心理模型是我可以按照以下方式做一些事情://CallbackinvokedforeachsuccessfullyparsedinstanceofT.voidf(Tcon

c++ - Boost python,暴露迈耶斯单例

我想以正确的方式去做。我在这里看到了boost::serialization::singletonBoostpythonexportsingleton但我不想使用它。我想改用简单的meyers单例。下面的代码有效,但文档说使用http://www.boost.org/doc/libs/1_43_0/libs/python/doc/v2/reference_existing_object.html#reference_existing_object-spec/很危险。代码:classSingleton{private:Singleton(){};public:staticSingleto