草庐IT

boost-msm

全部标签

c++ - Boost 程序选项语法

我正在使用boost::program_options从命令行参数读取用户的输入。它工作得非常好,允许我输出有用的使用消息并正确验证输入。但是,默认情况下,长选项名称必须位于双破折号之后,例如--my_long_option,而短选项位于单个破折号之后and必须是单个字符,例如;-m.有没有办法...在单个-后允许长选项吗?允许短选项有多个字符?因此允许我拥有看起来像的命令行./a.out-myopt1foo-myopt2bar虽然从编程的角度来看,这两种可能性应该具有相同的效果,但第一种可能更好。我看了看boost::program_options::command_line_sty

c++ - 在 Linux 中将 fork() + execlp 与 boost::asio 一起使用时解决重用错误

我有一个程序在TCP端口上监听特定字符串并使用execlp调用启动应用程序。我正在执行fork()以在此execlp调用之前启动子进程。在此启动后,父进程再次开始监听同一端口。我正在关闭子进程中的套接字。我在boost::asio::tcp_socket上写了一个包装器,我在绑定(bind)套接字之前将addr_reuse选项设置为true.现在我的问题是在Linux中,我在应用程序启动几次后收到地址重用错误。在我的程序中,它不断尝试接受连接(或者更准确地说,尝试安排对boost::asio::io_service的接受)直到绑定(bind),然后接受成功。所以我在这个循环中收到了错误

c++ - boost::prim_minimum_spanning_tree 中意外的负边权重错误

以下代码在prim_minimum_spanning_tree调用上抛出“负边权重”,即使我仅使用正数也是如此。应该改变什么才能让它发挥作用?typedefboost::propertyVertexProperty;typedefboost::propertyEdgeProperty;typedefadjacency_listGraph;typedefpairEdge;Edgeedges[]={Edge(0,1),Edge(1,2)};intweights[]={2,1};//thisworks:intweights[]={1,2};Graphg(edges,edges+sizeof(

c++ - 将 boost::bimap 转换为 std::map

将bimap转换为std::map的明显方法似乎不起作用。下面是正确/好的转换方法吗?有更好/更短的方法吗?typedefboost::bimapMapType;MapType_bimap;//Fill_bimapMapType::left_map&lmap=_bimap.left;//std::mapbmap(lmap.begin(),lmap.end());//THISDOESNTWORKstd::mapbmap;BOOST_FOREACH(MapType::left_const_referenceentry,lmap){bmap[entry.first]=entry.second

c++ - boost 灵气 : Omit element in Kleene Star parser

我想解析特殊的结构,把剩下的扔掉。但我不想使用skipper。我想获得这些构造的vector,所以我使用KleeneStar解析器作为主要规则。但是,每当有东西被丢弃时,一个默认构造的元素就会被插入到vector中。这是一个虚构的例子。它只查找字符串Test并丢弃其余部分,至少这是计划。但是每次规则garbage成功时,它都会将默认构造的项目添加到规则all中的vector,输出7insteat1。我如何告诉Spirit如果规则item成功,就添加到vector中?#defineBOOST_SPIRIT_USE_PHOENIX_V3#include#include#include#in

c++ - 使用 boost::log API 时,有没有办法从发布二进制文件中删除文本文字?

boost1.55提供了一个使用C++流插入运算符(也称为左移运算符)的日志记录API。虽然语法很方便,但我想不出从可执行文件中丢弃调试文本文字的方法。例如,使用MFC,TRACE宏在发布配置中最终成为一个空行。使用TRACE(或任何此类宏函数):TRACE("Thistextliteralshallonlybefoundindebugconfiguration");使用boostAPI:LOG_DEBUG我测试了(使用VisualStudio2010,启用了编译器完全优化(/Ox))Howtoremovelogdebuggingstatementsfromaprogram线程建议,但

c++ - boost::spirit:如何编写一个解析器来解析 2 个字符串并将它们 'combined' 变成一个?

我有一个qi::symbolescapedDoubleQuote可以将双""转换为\"。我尝试将其用于更复杂的解析器,并希望结果仍然是单个字符串。但是没有成功。我尝试使用和不使用qi::lexeme、qi::as_string和qi::as。#include#include#include#includenamespaceqi=boost::spirit::qi;namespaceascii=boost::spirit::ascii;structescapedDoubleQuote_:qi::symbols{escapedDoubleQuote_(){add("\"\"","\\\""

c++ - 从源代码编译后未安装 boost ptr_container 库

我已经将boost库从以前的1.54(svn源)更新到1.57(git源)。尽管我使用了相同的./b2参数,但目标目录不包含ptr_container库。具有克隆存储库的目录在此路径上正确包含ptr_container库:boost_git/libs/ptr_container我正在使用以下命令构建它:./b2--install--prefix=$SHL_PATH/boost-sNO_BZIP2=1-sNO_ZLIBruntime-link=sharedlink=shared-j2install但没有成功。编辑:似乎只有从git构建时才会出现问题。当我从boost站点下载zip包时,目

c++ - boost 异步读/写失败, "Insufficient system resources exist to complete the requested service"

我(貌似)随机收到错误:"Insufficientsystemresourcesexisttocompletetherequestedservice"当使用boost::asio::async_read_until或boost::asio::async_write串口时。将串行端口声明为:boost::asio::serial_portmSerialPort;在这个错误之后,我尝试try{mSerialPort.cancel();mSerialPort.close();}catch(boost::system::system_errorerror){;}其中一个(尚不确定是哪个)挂起并

c++ - CMake 错误 : common is required but boost was not found

我正在尝试使用cmake_3.5.0编译opencv_2.4.9以在Qt_5.3.2MinGW中运行一个项目,但它一直显示此错误:Commonneededbutcan'tfindboost我选择“MinGWMakefiles”作为生成器并在配置窗口中“指定native编译器”。我定义了BOOST_ROOT环境变量,这是我的CmakeLists.txt:cmake_minimum_required(VERSION2.8FATAL_ERROR)SET(sampleNameMyApp)set(Boost_USE_STATIC_LIBSON)set(Boost_USE_STATICON)set