首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么boost :: spirit :: qi :: parse()没有设置这个boost :: variant的值?

在这个问答内容中,我们提到了boost::spirit::qi::parse()函数和boost::variant类型。boost::spirit::qi是一个C++模板库,用于解析和生成数据。boost::variant是一个类型安全的联合类型,允许在运行时存储不同类型的值。

问题是:为什么boost::spirit::qi::parse()没有设置这个boost::variant的值?

答案:

boost::spirit::qi::parse()函数用于解析输入数据并将其存储到指定的变量中。如果boost::spirit::qi::parse()没有设置boost::variant的值,可能是由于以下原因:

  1. 解析规则不正确:请检查解析规则是否正确匹配输入数据。boost::spirit::qi提供了各种解析器,如int_double_string等,用于解析不同类型的数据。
  2. 解析规则与变量类型不匹配:请确保解析规则与boost::variant中存储的类型相匹配。例如,如果boost::variant存储了一个整数,那么解析规则应该是int_
  3. 解析过程中发生错误:请检查解析过程中是否发生了错误。boost::spirit::qi::parse()函数返回一个布尔值,表示解析是否成功。如果解析失败,boost::variant的值将不会被设置。
  4. 输入数据不完整或不正确:请检查输入数据是否完整且符合解析规则。如果输入数据不符合解析规则,boost::variant的值将不会被设置。
  5. 使用了错误的变量引用:请确保在调用boost::spirit::qi::parse()函数时,使用了正确的变量引用。如果使用了错误的变量引用,boost::variant的值将不会被设置。

为了解决这个问题,请检查解析规则、变量类型、解析过程中的错误、输入数据以及变量引用,确保它们都正确无误。如果问题仍然存在,请查阅boost::spirit::qi的文档和示例代码,以获取更多帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Boost.Spirit 初体验

; } 对于上面代码中高级生成器,可以参见Boost.SpiritSpirit Repository章节 接下来是Karma库: 这个库是用来把一些STL数据结构按和Qi一样规则转化成到输出流...如: karma::int_ * karma::类型(匹配) 只生成为匹配输出. karma::int_() * karma::eps(...) << ... << ....在研究这个时候,我也同时发现,想要真正高效使用Spirit库,还应该像这里例程一样,各种模板继承,但是,这也会增加编程复杂度。...来创建命名模式和使用**{占位符名称}来设置命名占位符token定义 另外,Lex还可以和Qi结合使用**,无论是Lex模式结构还是按自定义数据分段处理仿函数时使用ID编号方法,都有相应方法让他依据...Line 49: QI::Parse double true Spirit.Qi => Line 80: QI::Parse complex struct true Spirit.Qi

85740

Boost.Spirit 初体验

; } 对于上面代码中高级生成器,可以参见Boost.SpiritSpirit Repository章节 接下来是Karma库: 这个库是用来把一些STL数据结构按和Qi一样规则转化成到输出流...如: karma::int_ * karma::类型(匹配) 只生成为匹配输出. karma::int_() * karma::eps(...) << ... << ....在研究这个时候,我也同时发现,想要真正高效使用Spirit库,还应该像这里例程一样,各种模板继承,但是,这也会增加编程复杂度。...来创建命名模式和使用{占位符名称}来设置命名占位符token定义 另外,Lex还可以和Qi结合使用,无论是Lex模式结构还是按自定义数据分段处理仿函数时使用ID编号方法,都有相应方法让他依据...Line 49: QI::Parse double true Spirit.Qi => Line 80: QI::Parse complex struct true Spirit.Qi

3.2K10

VS编译BOOST,bjam参数详解

Boost库中比较有名几个库: (1)Regex,正则表达式库; (2)Spirit,LL parser framework,用C++代码直接表达EBNF; (3)Graph,图组件和算法; (4)Lambda...8.设置开发环境 打开VS2008 创建工程, 配置工程属性 设置包含文件目录F:\Develop\BoostlibAndDll\include\boost-1_37\boost 设置引用文件目录:F:...= static stage – 输出: 没有这种配置 (3)生成 Release 版本,多线程,动态链接C++标准库 regex静态库 bjam --toolset=msvc-9.0 --stagedir...variant=debug runtime-link=static stage – 输出:没有这种配置 【总结】: (1) 编译成功后,Bjam 都会给你生成一对一样导入库文件或者静态库文件(...生成库文件名称中包含 “-mt” variant=release 生成库文件名称不包含 “-gd” variant= debug 生成库文件名称包含 “-gd” runtime-link= static

41810

C++ Boost 库文档索引

| .gz ] Unix man pages DocBook XSL Formatting Objects   1 按字母顺序库列表   any - 安全,泛型容器,包含不同类型, 作者 Kevlin..., 作者 Fernando Cacciola, 基于 David Abrahams 思想. variant - 安全, 泛型, 基于栈,不同于联合容器, 作者 Eric Friedman and Itay...'类似printf' 格式操作, 作者 Samuel Krempp. regex - 正则表达式库, 作者 John Maddock . spirit - LL分析框架,在嵌入式C++中根据EBNF...map key objects to value objects, 作者 Jeremy Siek. variant - 安全, 泛型, 基于栈,不同于联合容器, 作者 Eric Friedman and...Järvi. variant - 安全, 泛型, 基于栈,不同于联合容器, 作者 Eric Friedman and Itay Maman.   2.12 输入/输出(Input/Output)

1.5K10

TPL: 一个新C++正则表达式(regex)库

boost 中就有3个:regex、spirit、xpressive。那么我们为什么还需要一个新呢? 多数正则表达式库都需要一个编译(compile)过程。...即:通过解释一个正则表达式字符串(pattern)来生成该正则表达式内部表示(字节码)。例如 boost regex 就是这样。这类我们称之为动态正则表达式库。...spirit、xpressive 是很好东西,实现 TPL 库中对这两者有所借鉴。 说起来开发 TPL 库理由看起来挺好笑:原因是 spirit、xpressive 太慢。...解释:尽管看起来好像没有发生太大变化。但是这两个样例本质上是不同。主要体现在: 正则表达式类型不同。real()/assign(values) % ws() 是一个Rule。...目前 tpl/Emulator.h (虚拟机)相关样例有: emulator: 演示我们虚拟机汇编指令。 variant: 演示虚拟机类型系统。

1.4K10

简单例子code

可以看出,这个模板参数有一点复杂。 有两个问题需要我们回答:(1)哪些类型需要进入模板参数列表?(2)我们为什么要用这些模板参数?...添加 在cmake中,需要点击add entry 添加Boost_USE_STATIC_LIB并设置为TRUE 最近在新 Windows 系统下使用 CMake+Boost,不慎踩了好多坑,浪费不少时间...注意:一定要仔细看二者执行结果,b2.exe好像依赖 python,如果没有安装 python,这个编译会报错。python 安装完成后要把python.exe路径添加到环境变量PATH中。...CRT Boost(_s),默认依赖平台 Boost_USE_DEBUG_RUNTIME 使用链接了 debug/release 版 CRT Boost(_g),默认为 ON 但我发现这几个开关实际上并不是平行各管各...环境变量 BOOST_ROOT 如果指定环境变量,BOOST_ROOT boost 所在上一级目录,比如我目录如下: 1 2 3 4 5 6 7 8 9 10 c:boost_1_62_0

27330

bjam 参数

还有一个非常需要注意地方,我在一次编译时候遇见过很变态问题,由于安装了VS2008,所以我想用VC9来编译,结果VC9设置似乎与环境变量冲突,在打开命令行工具时候会提示:此时不应有:<此处为系统所有环境变量...这个奇怪问题很可能是由于环境变量里路径过长或包含不该有的符号而导致,但奇怪是,VS2005并没有这个冲突问题。...Boost名字都以此字符串开始。...在Windows上,只有普通静态库使用lib前缀;导入库和DLL不使用。 · boost_regex 库名称:所有boost库名文件以boost_开头。...· -vc71 Toolset 标记:标识了构建该库所用toolset和版本。 · -mt Threading 标记:标识构建该库启用了多线程支持。不支持多线程没有-mt。

19020

Debug EOS:nodeos + mongo_db_plugin

set( BOOST_ROOT "/home/evsward/opt/boost") 这个文件中有很多set语句,这些语句都是开关,或者路径,或者全局变量,是配置各个子CMakeList.txt而用...config.ini文件中关于mongo_db_plugin部分,因为这个插件只有对于config.ini配置文件配置,没有对于命令行内容,我们可以去查看chain_plugin实现,它会同时有配置文件和命令行两个方面的内容设置...data-dir:是设置data目录命令保存至application类成员_data_dir,没有响应输出。 config-dir:设置config路径,保存在类成员_config_dir中。...startup) {//标志位,上面init函数结尾有这个赋值。...,这个工作是对trans_doc文本类型变量设置: trx_id设置 irreversible设置 transaction_header设置 signing_keys设置 actions设置:遍历源trx

2.1K10

【刘文彬】 Debug EOS:nodeos + mongo_db_plugin

set( BOOST_ROOT "/home/evsward/opt/boost") 这个文件中有很多set语句,这些语句都是开关,或者路径,或者全局变量,是配置各个子CMakeList.txt而用...config.ini文件中关于mongo_db_plugin部分,因为这个插件只有对于config.ini配置文件配置,没有对于命令行内容,我们可以去查看chain_plugin实现,它会同时有配置文件和命令行两个方面的内容设置...data-dir:是设置data目录命令保存至application类成员_data_dir,没有响应输出。 config-dir:设置config路径,保存在类成员_config_dir中。...startup) {//标志位,上面init函数结尾有这个赋值。...,这个工作是对trans_doc文本类型变量设置: trx_id设置 irreversible设置 transaction_header设置 signing_keys设置 actions设置:遍历源trx

1.3K20

Lucene5.5学习(8)-QueryParser实现高级查询

,因为这边测试实在是多,测试结果我就不贴了; ps:各个查询语义可以交叉使用,下面代码有部分也用到了,但是这边因为是写例子,为了能更好区分每个语义作用,所有没有做太多尝试...*");//使用OR联合多关键字查询,也可用空格代替OR Query queryoo=queryParser.parse(" Licensor ce*");//这个和使用OR一样效果...queryParser.parse("/[Lab]icenso[a-z]/");//根据需要可以更灵活使用 /** * 使用~模糊匹配查询 * 这个要和...*号用法区分下,*号完整通配多个字符查询,而~不是简单通配,这个模糊匹配和Lucene评分有关 */ Query queryFuzzy=queryParser.parse...(); boost.put("filePath",1.5F);//设置文档域 boost.put("context",2F); QueryParser

26880

(一)ROS系统入门 Getting Started with ROS 以Kinetic为主更新 附课件PPT

https://zhuanlan.zhihu.com/p/22266788 机器人学基本知识,可参考课件,Ubuntu使用可参考学习体会。网上资源多多,要善于发现,认真学习。 为什么要学习ROS?...教案1 ROS Indigo系统入门 教学目的:掌握ROS Indigo安装与配置 教学重点:Ubuntu软件源设置与更新,功能包安装等 教学难点:ROS环境配置 教学方法:课堂教学,示例演示 课外作业...如果你使用是ubuntu 14.04,请不要安装以上软件,否则会导致你X server无法正常工作 或者尝试 只 安装下面这个工具来修复依赖问题: sudo apt-get install libgl1...-mesa-dev-lts-utopic 关于这个问题更多信息请查看这个 answers.ros.org 提问 或者这个 launchpad 问题 ROS中有很多各种函数库和工具,我们为你提供了四种默认安装方式...sudo rosdep init rosdep update 环境设置 如果每次打开一个新终端时ROS环境变量都能够自动配置好(即添加到bash会话中),那将会方便得多:  echo "source

3.3K20

Android NDK R19 交叉编译 thrift C++ 库

在NDK下编译thrift C++库,先要要编译android版boost,这个不是本文讨论内容,关于编译android 版本boost,参见这个开源项目 Boost-for-Android,很好用...我用Boost-for-Androidk顺利编译了boost 1.69.(Android NDK r19) 有了android版boost就可以编译thrift C++库了。在这里走了不少弯路。...@ECHO OFF SETLOCAL EnableDelayedExpansion SET sh_folder=%~dp0 SET PACKAGE_NAME=thrift :: 检测是否安装NDK,没有安装...在FindBoost.cmake中这个由 CMAKE_CXX_COMPILER_ARCHITECTURE_ID 计算得出,如果不指定 CMAKE_CXX_COMPILER_ARCHITECTURE_ID...cmake 3.17.1版本以后 FindBoost.cmake 增加了 Boost_ARCHITECTURE 参数,可以直接指定这个识别码,比如 -x32,代码X86,-a32代表arm32 -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE

1.7K10

看完这 7 条,模拟 C++ 新功能只是一个小目标!

传递没有这些特定操作类型将会造成编译错误,并产生明确错误消息,以解释为什么该类型不是预期Iterator。 我不打算想你介绍如何在C++语言引入这些之前,自行模拟概念。...比如std::optional,或std::variant,这两者出现在C++ 17中。如果你没有C++ 17,那么想要编写自己实现并可靠地替换标准库接口并通过完整测试,并不是件容易事情。...幸运是,我们不需要自己这么干,因为有人帮你做好了。 仅次于标注库就是Boost。它实现了一些组件,包括Optional、Variant以及一些更先进STL算法。...但是,要注意Boost接口可能会烟花,因为Boost更关注于压榨语言本身能力,而不是尽一切可能保持向后兼容。 而且,一些标准库与Boost相应部分有这不小区别。...该提案一个标准里子就是interface元类,允许使用interface关键字定义接口方法,而编译器会考虑写虚描述符、将方法设置为纯虚方法、确保没有数据或私有成员等问题,简单来说就是符合接口一切特征

65810

C++ Boost 实现异步端口扫描器

因此,当我们说一个IPv4地址属于C段地址时,通常指的是这个地址前缀是C类地址范围,即以192.x.x.x到223.x.x.x范围。...同样我们在实现端口扫描之前需要生成一个C段地址中所有的主机IP,这里我们可以通过Boost库中字符串拼接功能来实现生成特定主机网段,具体实现细节如下所示; 例如192.168.1.1/100则代表要枚举出这个网段中所有的地址...本文将介绍如何使用Boost.Asio实现异步连接,以及如何设置超时机制,确保连接在规定时间内建立。Asio是Boost库中一个模块,用于异步I/O和网络编程。...这个类包含了异步连接主要逻辑,其中使用了tcp::socket和deadline_timer来处理异步操作和超时。...这个例子中,我们尝试连接到IP地址为"202.89.233.101",端口号为80服务器,并设置了连接超时时间为300毫秒。

30810

linux下Clang和gcc区别

对于 IDE 而言,代码补全、重构是重要功能,然而如果没有底层支持,只使用 tags 分析或是正则表达式匹配是很难达成, clang正好充当了这一角色。...尤其是在比较极端情况下。 两年多前曾经写过一个Scheme解释器,词法分析和语法解析部分大约2000行,用Boost.Spirit——一个重度依赖C++模版元编程框架。...,或者Spirit框架自身问题。...当时用是clang 2.8,刚刚可以完整编译Boost,效果让我很满意: 编译速度有显著提升,记得大约是g++1/3或1/4 编译过程中内存消耗差别好像不大 中间产出物及最终链接产物,记得也是g+...不过这个问题后来解决了,我不知道是clang支持了gdb还是gdb支持了clang。至少我当前在Ubuntu下用clang 3.0编译出二进制文件已经可以顺利用gdb调试了。

5.2K10
领券