Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C++;? 有人知道如何用C++和Booost pRead来解析数组的值吗?< /P> < P>假设输入 使用boostspiritv2.x_C++_Json_Boost - Fatal编程技术网

如何使用C++;? 有人知道如何用C++和Booost pRead来解析数组的值吗?< /P> < P>假设输入 使用boostspiritv2.x

如何使用C++;? 有人知道如何用C++和Booost pRead来解析数组的值吗?< /P> < P>假设输入 使用boostspiritv2.x,c++,json,boost,C++,Json,Boost,这里有一个简单的使用提神气的方法: { "values": [ { "A": 1, "B": 10 } ... ] } std::istream& {anonymous}::operator>>(std::istream&, {anonymous}::Array&) Parsed 13 elements: -------------------- { "A": 1, "B": 10, } --------------------

这里有一个简单的使用提神气的方法:

{
  "values": [
    { "A": 1, "B": 10 }
    ...
  ]
}
std::istream& {anonymous}::operator>>(std::istream&, {anonymous}::Array&)
Parsed 13 elements:
--------------------
{ "A": 1, "B": 10,  }
--------------------
{ "C": 3, "D": 12,  }
--------------------
{ "E": 5, "F": 14,  }
--------------------
{ "G": 7, "H": 16,  }
--------------------
{ "I": 9, "J": 18,  }
--------------------
{ "K": 11, "L": 20,  }
--------------------
{ "M": 13, "N": 22,  }
--------------------
{ "O": 15, "P": 24,  }
--------------------
{ "Q": 17, "R": 26,  }
--------------------
{ "S": 19, "T": 28,  }
--------------------
{ "U": 21, "V": 30,  }
--------------------
{ "W": 23, "X": 32,  }
--------------------
{ "Y": 25, "Z": 34,  }
namespace {
    using Element = std::map<std::string, int>;
    struct Array : std::vector<Element> { };

    namespace parser {
        using namespace boost::spirit::x3;
        rule<struct rule_key_t, std::string> s;
        rule<struct rule_element_t, Element> r;
        rule<struct rule_braced_t, Element>  e;

        auto s_def = '"' >> ~char_('"') >> '"';
        auto r_def = (s >> ':' >> int_) % ',';
        auto e_def = '{' >> r >> '}';

        BOOST_SPIRIT_DEFINE(s,r,e)
    }

    std::istream& operator>>(std::istream& is, Array& into) {
        using namespace parser;

        boost::spirit::istream_iterator f(is), l;

        if (!phrase_parse(f, l, '{'
                    >> lit("\"values\"") >> ':' >> '[' >> (e % ',') >> ']'
                >> '}', space, into))
        {
            is.setstate(is.rdstate() | std::ios::failbit);
        }

        return is;
    }
}
使用Spirit X3 同样的交易:

{
  "values": [
    { "A": 1, "B": 10 }
    ...
  ]
}
std::istream& {anonymous}::operator>>(std::istream&, {anonymous}::Array&)
Parsed 13 elements:
--------------------
{ "A": 1, "B": 10,  }
--------------------
{ "C": 3, "D": 12,  }
--------------------
{ "E": 5, "F": 14,  }
--------------------
{ "G": 7, "H": 16,  }
--------------------
{ "I": 9, "J": 18,  }
--------------------
{ "K": 11, "L": 20,  }
--------------------
{ "M": 13, "N": 22,  }
--------------------
{ "O": 15, "P": 24,  }
--------------------
{ "Q": 17, "R": 26,  }
--------------------
{ "S": 19, "T": 28,  }
--------------------
{ "U": 21, "V": 30,  }
--------------------
{ "W": 23, "X": 32,  }
--------------------
{ "Y": 25, "Z": 34,  }
namespace {
    using Element = std::map<std::string, int>;
    struct Array : std::vector<Element> { };

    namespace parser {
        using namespace boost::spirit::x3;
        rule<struct rule_key_t, std::string> s;
        rule<struct rule_element_t, Element> r;
        rule<struct rule_braced_t, Element>  e;

        auto s_def = '"' >> ~char_('"') >> '"';
        auto r_def = (s >> ':' >> int_) % ',';
        auto e_def = '{' >> r >> '}';

        BOOST_SPIRIT_DEFINE(s,r,e)
    }

    std::istream& operator>>(std::istream& is, Array& into) {
        using namespace parser;

        boost::spirit::istream_iterator f(is), l;

        if (!phrase_parse(f, l, '{'
                    >> lit("\"values\"") >> ':' >> '[' >> (e % ',') >> ']'
                >> '}', space, into))
        {
            is.setstate(is.rdstate() | std::ios::failbit);
        }

        return is;
    }
}
当然,输出与前面相同。

假设输入

使用boostspiritv2.x 这里有一个简单的使用提神气的方法:

{
  "values": [
    { "A": 1, "B": 10 }
    ...
  ]
}
std::istream& {anonymous}::operator>>(std::istream&, {anonymous}::Array&)
Parsed 13 elements:
--------------------
{ "A": 1, "B": 10,  }
--------------------
{ "C": 3, "D": 12,  }
--------------------
{ "E": 5, "F": 14,  }
--------------------
{ "G": 7, "H": 16,  }
--------------------
{ "I": 9, "J": 18,  }
--------------------
{ "K": 11, "L": 20,  }
--------------------
{ "M": 13, "N": 22,  }
--------------------
{ "O": 15, "P": 24,  }
--------------------
{ "Q": 17, "R": 26,  }
--------------------
{ "S": 19, "T": 28,  }
--------------------
{ "U": 21, "V": 30,  }
--------------------
{ "W": 23, "X": 32,  }
--------------------
{ "Y": 25, "Z": 34,  }
namespace {
    using Element = std::map<std::string, int>;
    struct Array : std::vector<Element> { };

    namespace parser {
        using namespace boost::spirit::x3;
        rule<struct rule_key_t, std::string> s;
        rule<struct rule_element_t, Element> r;
        rule<struct rule_braced_t, Element>  e;

        auto s_def = '"' >> ~char_('"') >> '"';
        auto r_def = (s >> ':' >> int_) % ',';
        auto e_def = '{' >> r >> '}';

        BOOST_SPIRIT_DEFINE(s,r,e)
    }

    std::istream& operator>>(std::istream& is, Array& into) {
        using namespace parser;

        boost::spirit::istream_iterator f(is), l;

        if (!phrase_parse(f, l, '{'
                    >> lit("\"values\"") >> ':' >> '[' >> (e % ',') >> ']'
                >> '}', space, into))
        {
            is.setstate(is.rdstate() | std::ios::failbit);
        }

        return is;
    }
}
使用Spirit X3 同样的交易:

{
  "values": [
    { "A": 1, "B": 10 }
    ...
  ]
}
std::istream& {anonymous}::operator>>(std::istream&, {anonymous}::Array&)
Parsed 13 elements:
--------------------
{ "A": 1, "B": 10,  }
--------------------
{ "C": 3, "D": 12,  }
--------------------
{ "E": 5, "F": 14,  }
--------------------
{ "G": 7, "H": 16,  }
--------------------
{ "I": 9, "J": 18,  }
--------------------
{ "K": 11, "L": 20,  }
--------------------
{ "M": 13, "N": 22,  }
--------------------
{ "O": 15, "P": 24,  }
--------------------
{ "Q": 17, "R": 26,  }
--------------------
{ "S": 19, "T": 28,  }
--------------------
{ "U": 21, "V": 30,  }
--------------------
{ "W": 23, "X": 32,  }
--------------------
{ "Y": 25, "Z": 34,  }
namespace {
    using Element = std::map<std::string, int>;
    struct Array : std::vector<Element> { };

    namespace parser {
        using namespace boost::spirit::x3;
        rule<struct rule_key_t, std::string> s;
        rule<struct rule_element_t, Element> r;
        rule<struct rule_braced_t, Element>  e;

        auto s_def = '"' >> ~char_('"') >> '"';
        auto r_def = (s >> ':' >> int_) % ',';
        auto e_def = '{' >> r >> '}';

        BOOST_SPIRIT_DEFINE(s,r,e)
    }

    std::istream& operator>>(std::istream& is, Array& into) {
        using namespace parser;

        boost::spirit::istream_iterator f(is), l;

        if (!phrase_parse(f, l, '{'
                    >> lit("\"values\"") >> ':' >> '[' >> (e % ',') >> ']'
                >> '}', space, into))
        {
            is.setstate(is.rdstate() | std::ios::failbit);
        }

        return is;
    }
}
当然,输出与前面的相同。

使用与sehe相同的输入

假设输入

#包括“ThorSerialize/jsontor.h”
#包括“ThorSerialize/SerUtil.h”
#包括“ThorSerialize/Traits.h”
#包括
#包括
结构数据
{
std::vector values;//输入的值
};
ThorsAnvil_MakeTracit(数据、值);//描述可以序列化的内容
//所有标准都有一个定义
//SerUtil.h中的类型
int main()
{
std::ifstream数据流(“input.json”);
数据;
/自动读取数据到C++结构。
//直接从溪流中流出。
dataStream>>ThorsAnvil::Serialize::jsonImport(数据);
//将C++结构转换成JSON以输出到流。
std::cout使用与sehe相同的输入

假设输入

#包括“ThorSerialize/jsontor.h”
#包括“ThorSerialize/SerUtil.h”
#包括“ThorSerialize/Traits.h”
#包括
#包括
结构数据
{
std::vector values;//输入的值
};
ThorsAnvil_MakeTracit(数据、值);//描述可以序列化的内容
//所有标准都有一个定义
//SerUtil.h中的类型
int main()
{
std::ifstream数据流(“input.json”);
数据;
/自动读取数据到C++结构。
//直接从溪流中流出。
dataStream>>ThorsAnvil::Serialize::jsonImport(数据);
//将C++结构转换成JSON以输出到流。

std::cout您尝试过什么?例如,您尝试过调用
read_json
?如果是,出了什么问题?如果不是,为什么不?显示您问题的SSCCE在哪里?目前:这已经被问了很多次,并在json解析器的~20行文档中进行了描述。您尝试过什么?例如,y你试着调用
read_json
?如果是,哪里出了问题?如果不是,为什么不?显示你问题的SSCCE在哪里?现在:这已经被问了很多次,在json解析器的约20行文档中描述了阅读文档。我已经完成了3个与之竞争的实现,这是在古老的过度杀戮answ传统中完成的ers:()我对lern@ColumboIn非常认真,坚持下去,很棒的东西!Boost很强大…非常强大。通过你的几句话,我解决了我几个小时的问题…谢谢你。我已经完成了3个与之竞争的实现,这是一个古老的超杀答案传统:()我对lern@ColumboIn说的很认真,坚持下去,很棒的东西!Boost很强大…非常强大。通过你的几句话,我解决了我几个小时的问题…谢谢你。