gpt4 book ai didi

c++ - 示例解析错误

转载 作者:行者123 更新时间:2023-11-30 04:25:22 25 4
gpt4 key购买 nike

我正在尝试按照示例解析 boost spirit (2.5.2) 的示例。我的代码如下

#include <boost\spirit\home\qi.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;
}

几乎等于找到的例子here ,但是当我使用 Visual Studio 2010(32 位,调试)编译它时,出现以下错误:

error C2440: 'static_cast': unable to convert from 'const double' to 'std::pair<_Ty1,_Ty2>'

(错误可能略有不同,我是从意大利语翻译过来的)

我做错了什么以及如何成功编译该示例?

预先感谢您的回复。

最佳答案

您缺少一个包含:

#include <boost/fusion/adapted/std_pair.hpp>

它定义了属性分配规则,使 Fusion 序列 (vector2<>) 可分配给 std::pair。

实时查看代码: 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";
}

关于c++ - 示例解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com