草庐IT

boost-phoenix

全部标签

c++ - 如何使用 boost::latch?

我试图在我的程序中使用boost::latch来阻止等待,直到所有线程完成或超时。我的代码如下。ctpl是从https://github.com/vit-vit/CTPL采用的线程池库.#include#include#include#includeusingnamespacestd;intmain(intargc,char**argv){ctpl::thread_poolouter_tp(100);ctpl::thread_poolinner_tp(5,5000);autoout_func=[&inner_tp](intouter_id,intouter_invoke_idx){in

c++ - Boost 1_65_1 不使用 OpenSSL 1.1.0g "undefined reference"编译,但使用 "nm"找到

我正在尝试让SSL与boostASIO一起工作。我在Windows上使用MingW6.3。我用MingW构建了OpenSSL1.1、1.0和0.8,当我尝试将它们链接到项目时,我总是会遇到不同的错误(取决于缺少什么)。现在我正在尝试使OpenSSL1.1.0g工作,但即使我使用CMAKE手动提供库的路径,我也会遇到这些错误:如果我使用OpenSSL1.1.0g构建我的项目,这是错误:"C:\ProgramFiles\JetBrains\CLion2017.2.3\bin\cmake\bin\cmake.exe"--buildC:\Users\myuser\Documents\Mages

c++ - 具有 Boost 格式的 int 特征向量的格式化 cout

我想使用boost::format计算int的特征向量,使数字右对齐。到目前为止,我有以下代码intmain(){vectorfoo;Vector3ibar;bar输出是-1-10000但我希望有以下输出-1-10000如果我修改for中的格式和代码,我可以达到想要的结果boost::formatheader2("%2d%2d%2d");for(inti=0;i但是,有人能告诉我是否有更有效的方法使用boost::format来做到这一点? 最佳答案 您可以使用解决方法:boost::formatheader("%+3d");//A

c++ - 在 boost 二进制文件上使用显式位置编译 boost 标志

我正在编译一个需要boost::filesystem的项目。我在编译步骤中包含了以下标志:g++-Wall-ggdb-Werror-std=c++11-lboost_system-lboost_filesystem-I/custom/path/to/boost_1_67_0-obuild/mainbuild/cp.obuild/walk.obuild/diff.obuild/main.o我得到一个错误:build/cp.o:Infunction`boost::filesystem::relative(boost::filesystem::pathconst&,boost::filesy

c++ - 是否有将 EBNF 翻译成 boost::spirit 的翻译工具?

翻译器也可以在boost::spirit中。我在互联网上找不到任何东西。也许我应该做一个? 最佳答案 从spiritintroduction开始:ExpressiontemplatesallowustoapproximatethesyntaxofExtendedBackus-NormalForm(EBNF)completelyinC++.因此您几乎可以编写纯EBNF,不需要翻译器。我对spirit不是很熟悉,不知道语法到底有什么不同,但是如果spiritC++EBNF和realEBNF的差异很小,那么一个简单的sed脚本可能就足够了

c++ - 如何将 Boost 线程池从 fifo 转换为优先级?

我正在开发一个Boost线程池。我有这样的结构:classSimThreadPool{staticSimThreadPool*getInstance();boost::threadpool::prio_pool&getThreadPool(){returnmThreadPool;}simTerrain::SimThreadPool::SimThreadPool():mThreadPool(boost::threadpool::fifo_pool(1)){}boost::threadpool::prio_poolmThreadPool;}当我需要一个线程时,我这样调用它:SimThrea

c++ - boost::filesystem::create_directories();将文件夹添加到陌生位置

我正在使用boost创建一个目录来放置一些临时文件。intmain(intargc,char*argv[]){std::cout现在,如果双击该exe,文件夹"TempFolder"将在与exe相同的目录中创建,这是我所期望的。但是,如果我现在将一个文件拖到exe上,该文件夹将在"C:\DocumentsandSettings\0xC0DEFACE"中创建,这是我当然没有想到的。看到我的应用程序没有改变,正在打印的目录也没有改变,我的应用程序当前忽略传递的字符串,为什么现在在新目录中创建文件夹?我正在运行带有VS9的WindowsXP,并且我正在使用boost1.39。

c++ - boost::fusion::push_back 的正确用法是什么?

//...snippedincludesforiostreamandfusion...namespacefusion=boost::fusion;classBase{protected:intx;public:Base():x(0){}voidchug(){x++;coutvoidoperator()(T&t)const{t->chug();}};intmain(){typedeffusion::vectorStuff;Stuffstuff(newBase,newAlpha,newBravo,newBase);fusion::for_each(stuff,chug());//Mutat

c++ - boost::threads - 如何正常关机?

我正在尝试通过使用boost:threads而不是我们自己的Win32线程包装器来提高C++应用程序的可移植性,而优雅的线程终止问题(再次)又浮出水面。在纯win32上,我使用QueueUserAPC来“中断”线程抛出一个“thread_interrupt”异常,导致所有RAII对象在退出时被清理,asdescribedhere.任何“可警报”操作系统功能都可以通过这种方式中断,因此互斥等待、sleep、串行和套接字I/O等都是可能的中断点。但是,boost:mutexes等在win32上不会被QueueUserAPC“警告”——它们调用诸如Sleep(n)而不是SleepEx(n,t

c++ - 如何让 boost::iostream 以类似于 std::ios::binary 的模式运行?

我有以下关于boost::iostreams的问题。如果有人熟悉编写过滤器,我将非常感谢您的建议/帮助。我正在编写一对多字符过滤器,它们与boost::iostream::filtering_stream一起用作数据压缩器和解压缩器。我从编写压缩器开始,从lz系列中学习了一些算法,现在正在研究解压缩器。简而言之,我的压缩器将数据拆分为数据包,这些数据包分别编码,然后刷新到我的文件中。当我必须从我的文件中恢复数据时(在编程术语中,接收一个read(byte_count)请求),我必须读取一个完整打包block,缓冲它,解压它,然后才给出请求的字节数。我已经实现了这个逻辑,但现在我正在努力