首页
学习
活动
专区
工具
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.Spirit的Spirit 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

90440

Boost.Spirit 初体验

; } 对于上面代码中的高级生成器,可以参见Boost.Spirit的Spirit 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.3K10
  • 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

    52310

    C++ 中文周刊 2024-03-03 第150期

    ,转向更安全的语言,明示c++不行 除了把NSA之前的观点重新提出来之外,没有任何新东西 就像个想离婚的在这里埋怨不想过了,死鬼你也不改你看人家xx语言 要我说这就是美帝不行的原因,从上到下都没有耐性我靠...新parser正在review中 https://lists.boost.org/Archives/boost/2024/02/255957.php 类似boost spirit,代码在这里 https...://github.com/tzlaine/parser think-cell出了个意见,他们在自己的库里维护了boost spirit,觉得重新造轮子不太合理,详情见 https://www.think-cell.com...0x20000000 | 0x20000000 1 << 30 : 0x40000000 | 0x40000000 1 << 31 : 0xffffffff80000000 | 0x80000000 m32并没有这个问题...auto r = parse("1"); if (r.success) { printf("%d", r.value); } } 不建议使用 LLVM 中的一致性分析框架详解 之

    10010

    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.6K10

    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.5K10

    简单例子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

    31930

    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

    bjam 参数

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

    22420

    【刘文彬】 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.4K20

    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

    36080

    (一)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.4K20

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

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

    67910

    【C++|Linux|计网】构建Boost站内搜索引擎的技术实践与探索

    站内搜索:搜索的数据更垂直,数据量其实更小 boost的官网是没有站内搜索的,需要我们自己做⼀个 boost网站中是没有相关的搜索引擎的,我们自己实现一个!... : html的标签,这个标签对我们进⾏搜索是没有价值的,需要去掉这些标签,⼀般标签都是成 对出现的! 为什么要去标签?...默认没有打开,当用的时候一般是要打开的。 测试代码: 最后输出就是三部分,没有空格!...并且要将权值修改,我们应该将搜索到的相同内容进行权值的累加,作为该文档的真正权值!...} /* 先选中input标签, 直接设置标签的属性,先要选中, input:标签选择器*/ /* input在进行高度设置的时候,没有考虑边框的问题 */

    9110

    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
    领券