草庐IT

boost_thread

全部标签

c++ - boost::split:如何用字符拆分字符串?

我被这个简单的问题困住了。假设我有一个由字符[0-9]组成的字符串。我想做的是使用boost::split将字符串拆分为单个字符。std::stringstr="0102725";std::vectorstr2;boost::split(str2,str,boost::is_any_of(SOMETHING));我正在寻找一些东西,以便str2[0]包含“0”,str2[1]包含“1”,str2[2]包含“0”等等。到目前为止,我已经尝试过“”、“:”和“:”,但没有运气...... 最佳答案 boost::split太过分了。fo

c++ - 奇怪的 mingw 链接器错误与 boost ?

我已经为此工作了一段时间,但似乎无法理解这种情况-部分原因是我不完全了解发生了什么(这就是我来这里的原因)。我正在做一种boostHelloWorld如下:#include#includevoidhelloworld(){std::printf("HELLOFROMABOOSTTHREAD!");}intmain(intargc,char**argv){boost::threadt(&helloworld);t.join();}这是在Windows上。我将Boost目录存储在C:\Boost中。我运行了bootstrap和bjam,现在有一个包含所有.lib文件的stage/lib文件

c++ - 编译简单的boost spirit语法

我在编译一个小的boost::spirit语法时遇到了问题。这是我遇到问题的较大语法的一小部分,我正在尝试测试较小的部分以找到我的问题。基本上这个语法应该做的是解析一个具有任意数量的前导/尾随空格的double值。然而,当我尝试编译时,我得到了一整套我不明白的问题。欢迎任何帮助!代码:语法.h#ifndefGRAMMAR_H#defineGRAMMAR_H#includetemplatestructpoint_double_grammar:boost::spirit::qi::grammar{/***Constructorusedtocreatethegrammar.*@paramis

c++ - Boost Spirit 信号成功解析,尽管 token 不完整

我有一个非常简单的路径构造,我正在尝试使用boostspirit.lex进行解析。我们有以下语法:token:=[a-z]+path:=(token:path)|(token)所以我们在这里只讨论冒号分隔的小写ASCII字符串。我有三个示例“xyz”、“abc:xyz”、“abc:xyz:”。前两个应该被认为是有效的。第三个以冒号结尾,不应被视为有效。不幸的是,我的解析器认为这三个都是有效的。语法不应允许空标记,但显然spirit正在这样做。我错过了什么让第三个被拒绝?此外,如果您阅读下面的代码,在注释中有另一个版本的解析器要求所有路径以分号结尾。当我激活这些行时,我可以获得适当的行为

C++/Boost 在多个字符上拆分字符串

一旦我看到一个示例,这可能真的很简单,但是我如何概括boost::tokenizer或boost::split以处理由多个字符组成的分隔符?例如,对于“__”,这些标准拆分解决方案似乎都不起作用:boost::tokenizer>tk(myString,boost::escaped_list_separator("","____","\""));std::vectorresult;for(stringtmpString:tk){result.push_back(tmpString);}或boost::split(result,myString,"___");

c++ - 从 boost::phoenix::lambda 中调用一个函数

我正在尝试使用boost::phoenix在缺少C++11支持的旧编译器上模拟C++lambda表达式,但我无法从lambda表达式中调用简单函数.C++11版本:[](unsigneda){foo(a);}(12678u);//callsfoo(12678u)我的PhoenixLambda代码如下:#include#include#includenamespaceph=boost::phoenix;usingph::local_names::_a;usingph::placeholders::arg1;voidfoo(uint32_tval){std::cout这会产生以下编译器错误

c++ - 如何手动刷新 boost 日志?

我正在使用boost1.54.0中的Boost.Log,看看它是否适合我的应用程序。一般来说,我没有缓冲问题,所以我不想打开auto_flush或任何东西......但我注意到在我调用fork()之前记录的消息是重复的,我想知道是否是因为它们被缓冲,复制过程镜像时缓冲区被复制,然后两个进程最终将它们的缓冲区拷贝写入日志文件...所以基本上,我只想在调用fork()之前对日志进行一次手动刷新,一次。为了确保没有消息仍在内存中。换句话说,我正在寻找类似于fflush()的东西。,.flush(),等,我可以在boost日志上使用。我确实尝试使用使用日志,但我仍然收到重复的消息,所以我不能1

c++ - 如何将 Boost header 与 Jetbrains Appcode 一起使用

我通过MacPorts在我的Macbook上安装了Boost库,想知道如何配置AppCode来识别标题。我尝试右键单击项目->添加框架和库->其他...->浏览到/opt/local/include->选择但这不是似乎没有将Boost添加到列表中。有没有人成功让Boost与AppCode一起工作? 最佳答案 万一其他人通过谷歌偶然发现了这个:涉及三个步骤:右键单击该项目并选择AddFrameworksandLibraries,然后选择Other,然后浏览所有dylib。由于我通过brew安装了boost,dylib位于/usr/lo

c++ - 使用 boost::bind 将回调发布到任务队列

假设我有一个名为subscribe()的函数,它接受一个回调处理程序,它会在事件被触发时被调用。现在,我有另一个版本,称为subscribe2()。一切都一样,只是在触发时需要将其发布到事件队列。它是使用原始的subscribe()实现的,带有一个名为helper()的辅助函数。它所做的只是将原始处理程序和任何其他参数绑定(bind)到仿函数中,然后调用postToEventQueue()。现在,我想知道是否有一种方法可以消除辅助函数,以便在subsribe2()中,我可以以某种方式将postToTaskQueue()函数和原始函数打包直接回调处理程序,并将其传递给subscribe(

c++ - Boost.Python 1.54(调试版本)对 Windows 上 Python27.lib 的令人费解的依赖性

我一定是犯了一些明显的错误,但经过几个小时的斗争,我无法取得进一步的进展:在升级到Boost1.54、CMake2.8.12和Python2.7.5(这三个都来自略微较早的次要版本)之后,我的project的Python绑定(bind)不再在调试配置中链接(它们在发布中链接良好)。我正在使用VS2012构建。更新前一切正常。我以标准方式构建了Boost:bootstrap.bat后跟b2address-model=64toolset=msvc-11.0。我的系统安装了Python2.7,它由b2获取:notice:[python-cfg]Configuringpython...noti