c – 解析错误的示例
作者:互联网
我试图按照例子解析一个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,boost,boost-spirit 来源: https://codeday.me/bug/20190929/1833723.html