解析错误示例
Example parsing error
本文关键字:错误 更新时间:2023-10-16
我正试图根据示例解析boost spirit(2.5.2)的一个示例。我的代码是以下
#include <boostspirithomeqi.hpp>
#include <iostream>
#include <string>
#include <utility>
int main()
{
// Parsing two numbers
std::string input("1.0 2.0");
std::pair<double, double> p;
boost::spirit::qi::phrase_parse(
input.begin(),
input.end(),
boost::spirit::qi::double_ >> boost::spirit::qi::double_ , // Parse grammar
boost::spirit::qi::space,
p
);
return 0;
}
它几乎等于这里的例子,但当我用Visual studio 2010(32位,调试)编译它时,我得到了以下错误:
error C2440: 'static_cast': unable to convert from 'const double' to 'std::pair<_Ty1,_Ty2>'
(错误可能略有不同,我已经从意大利语翻译过来了)
我做错了什么?我如何才能成功编译这个例子?
提前感谢您的回复。
您缺少一个include:
#include <boost/fusion/adapted/std_pair.hpp>
它定义了属性分配规则,使Fusion序列(vector2<>)可分配给std::pair。
查看代码live:liveworkspace.org
#include <boost/spirit/include/qi.hpp>
#include <boost/fusion/adapted/std_pair.hpp>
#include <iostream>
#include <string>
#include <utility>
int main()
{
// Parsing two numbers
std::string input("1.2 3.4");
std::pair<double, double> p;
namespace qi = boost::spirit::qi;
qi::phrase_parse(
input.begin(),
input.end(),
qi::double_ >> qi::double_ , // Parse grammar
qi::space, p);
std::cout << "Lo: " << p.first << "n"
<< "Behold: " << p.second << "n";
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'