C++ aide

amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   -  
amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voila je souhaiterais parser une chaine de caractere avec json spirit, c'est une chaine de caractere que je recupere en get (web services )

avez vous des piste pour que je puisse parser ma chaine

merci de votre aide

Cordialment

2 réponses

crackman2 Messages postés 1380 Date d'inscription   Statut Membre Dernière intervention   197
 
salut vas sur ce lien cela t aideras bcp si tu es débutant:

https://www.codeproject.com/Articles/20027/JSON-Spirit-A-C-JSON-Parser-Generator-Implemented
0
amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   12
 
slt crackman,

voila j'ai trouvé une fonction qui me permet de parser une chaine de caractere, mais tu peu me dire stp quel est la variable qui prend en compte le text a parser, comme ca je rentre ca valeur.

la fonction

#include <boost/spirit.hpp>
#include <fstream>
#include <sstream>
#include <iostream>

struct json_grammar
: public boost::spirit::grammar<json_grammar>
{
template <typename Scanner>
struct definition
{
boost::spirit::rule<Scanner> object, member, string, value, number, array;

definition(const json_grammar &self)
{
using namespace boost::spirit;
object = "{" >> member >> *("," >> member) >> "}";
member = string >> ":" >> value;
string = "\"" >> *~ch_p("\"") >> "\"";
value = string | number | object | array | "true" | "false" | "null";
number = real_p;
array = "[" >> value >> *("," >> value) >> "]";
}

const boost::spirit::rule<Scanner> &start()
{
return object;
}
};
};

int main(int argc, char *argv[])
{
std::ifstream fs(argv[1]);
std::ostringstream ss;
ss << fs.rdbuf();
std::string data = ss.str();

json_grammar g;
boost::spirit::parse_info<> pi = boost::spirit::parse(data.c_str(), g, boost::spirit::space_p);
if (pi.hit)
{
if (pi.full)
std::cout << "parsing all data successfully" << std::endl;
else
std::cout << "parsing data partially" << std::endl;
std::cout << pi.length << " characters parsed" << std::endl;
}
else
std::cout << "parsing failed; stopped at '" << pi.stop << "'" << std::endl;
}

je lé trouvé ici :

https://theboostcpplibraries.com/boost.spirit

c'est dans GRAMMAR le 2 eme code

Merci de ton aide

Cordialement
0
amine69500 Messages postés 422 Date d'inscription   Statut Membre Dernière intervention   12
 
Ok super merci

Cordialement
0