草庐IT

c++ - boost asio 以写入文件

我想异步写入文件。我有一个带有函数的类,该函数接受vector和文件名,并将其发送到文件。这个函数可以从类外被调用几千次。我想执行写异步的原因是......调用者可以只请求写,然后不必担心或等待写完成。我没有使用套接字、tcp...我正在研究boost::asio,试图找到例子——我能找到的都是使用网络的例子:http://liveworkspace.org/code/3R3RUd%240SerializeandsendadatastructureusingBoost?boost::asioasync_readguaranteeallbytesareread还有更多。有人可以推荐一个文

c++ - 可以在运行时在不同的 Boost 伪随机数生成器之间进行选择吗?

我正在使用BoostRandom库为蒙特卡罗模拟生成随机数。为了检查我的结果,我希望能够为不同的运行使用不同的RNG引擎。理想情况下,我想使用命令行选项来确定在运行时使用哪个RNG,而不是例如在编译时通过typedef选择RNG。是否有一个基类T使得类似下面的事情成为可能;或者,如果不是,为什么不这样做的明显原因?#includeintmain(){unsignedcharrng_choice=0;T*rng_ptr;//base_classpointercanpointtoanyRNGfromboost::randomswitch(rng_choice){case0:rng_ptr=

c++ - 为什么这个 time_zone_ptr 示例不包含内存泄漏?

我正在阅读boostDateTime库here,其中包含许多示例,例如:time_zone_ptrzone(newposix_time_zone("MST-07"));我很好奇为什么使用关键字“new”不会导致内存泄漏?我调查了boost源代码,注意到它有两个不同版本的构造函数,一个使用shared_ptr,另一个使用weak_ptr。有人可以解释这些是如何工作的,以及为什么上面的行可以安全编写? 最佳答案 time_zone_ptr只是boost::shared_ptr的别名.这是一个智能指针,它获取动态分配对象的所有权,从构造它

c++ - Boost Spirit 报错

我的解析器语法底部有以下错误处理程序:qi::on_error(launch,std::cerr(spirit::_3,spirit::_2)问题是解析器的输入没有事先被新行打断,因此生成的错误语句将是源代码中从错误点到结尾的所有行。有没有直接的替代方法phoenix::construct(spirit::_3,spirit::_2)只打印发生错误的那一行?如果我尝试只搜索'\n',Phoenix语义给我带来了麻烦。 最佳答案 我们需要创建一个可以接受Spirit参数的Phoenix函数。//lazyfunctionforerror

c++ - 构造函数不能采用非常量引用

我有以下类(class):classFoo{public:explicitFoo(std::vector&functionCalls){}};typedefboost::shared_ptrFooPtr;我尝试这样使用:std::vectorfunctionCalls;FooPtrfoo=boost::make_shared(functionCalls);我在VS20012中编译良好,但在gcc4.3.4中无法编译。这是编译器错误:boost/boost_1_54_0/boost/smart_ptr/make_shared_object.hpp:Infunction'typenameb

c++ - 在 boost::spirit::qi 中,是否可以在运行时动态修改规则定义

我用boost::spirit::qi::rule写了一些语法来解析互联网数据包。语法是这样的:qi::rulestart,request,response,status,query;start=(request|response|status|query)>>lit("\r\n");为了boost性能,用户可能希望在运行时跳过一些规则,例如忽略“response”、“status”、“query”,只尝试匹配请求,因此规则将更改为:start=(request)>>lit("\r\n");这有可能吗?例如,是否有像“disable()”这样的函数来禁用规则“re​​sponse”、“

c++ - boost fusion 和 boost qi - 编译时错误

我无法编译以下代码:#include#include#includestructfunction{std::stringret_type;std::stringname;};BOOST_FUSION_ADAPT_STRUCT(function,(std::string,ret_type)(std::string,name))intmain(){}带有boost1.54的MSVC-11.0给我以下错误:1>main.cpp(6084):errorC3203:'function':unspecializedclasstemplatecan'tbeusedasatemplateargumen

c++ - 使用 boost::asio 连接到 HTTPS 服务器

我想使用boost::asio连接到HTTPS服务器。我成功地与服务器握手,但我就是无法让服务器响应我的POST请求。这是相关代码(我省略了调试和try-catch以节省一些空间):HTTPSClient::HTTPSClient(){ssl::contextcontext(ssl::context::sslv23);context.set_verify_mode(ssl::verify_peer);context.set_default_verify_paths();context.load_verify_file("certificate.pem");mSSLSocket=news

c++ - Boost::tokenizer 点分开,但也保留空字段

我看过thisquestion和我的很像,但是又不一样,所以请不要标为重复。我的问题是:如何从字符串中获取空字段?我有一个类似std::strings="This.is..a.test";的字符串我想获得字段.我也试过typedefboost::char_separatorChSep;typedefboost::tokenizerTknChSep;ChSepsep(".",".",boost::keep_empty_tokens);TknChSeptok(s,sep);for(TknChSep::iteratorbeg=tok.begin();beg!=tok.end();++beg)

c++ - libtorrent-rasterbar 和 Visual Studio 2013

我正在尝试使用libtorrent-rasterbar和VS2013(C++)构建一个简单的代码(examples/simple_client.cpp),但我收到以下链接器错误:errorLNK2019:unresolvedexternalsymbol"void__cdecllibtorrent::rel_performancetimer_pools_nolog_resolvecountries_deprecated_nodht_ext_(void)"(?rel_performancetimer_pools_nolog_resolvecountries_deprecated_nodht