J'essaye d'analyser un fichier et d'avoir les données copiées dans un vecteur dans un objet de classe. J'ai pris l'exemple de l'employé et l'ai modifié pour ce que j'essaie de faire. Le fichier en cours d'analyse ressemble à ceci (mais plus de lignes) ...spirit x3 comment ajouter un vecteur à un AST
1 0.2 0.3 0.4
J'ai ajouté un vecteur à l'employé struct et je reçois échecs d'assertion sur la ligne de phrase_parse. Je pense en quelque sorte que la taille attendue a quelque chose à voir avec le vecteur. Des pensées sur où je vais mal?
namespace client {
namespace ast {
struct employee
{
int id;
std::vector<double> coords;
};
using boost::fusion::operator<<;
}}
BOOST_FUSION_ADAPT_STRUCT(
client::ast::employee,
(int, id)
(std::vector<double>, coords)
)
namespace client
{
namespace parser
{
namespace x3 = boost::spirit::x3;
namespace ascii = boost::spirit::x3::ascii;
using x3::int_;
using x3::double_;
x3::rule<class employee, ast::employee> const employee = "employee";
auto const employee_def =
int_ >> double_ >> double_ >> double_;
BOOST_SPIRIT_DEFINE(employee)
}
}
int main()
{
using boost::spirit::x3::ascii::space;
using client::parser::employee;
string fil("test-file.in");
mapped_file_source map(fil);
istringstream iss(map.data());
map.close();
client::ast::employee emp;
boost::spirit::istream_iterator iter(iss >> noskipws), eof;
phrase_parse(iter, eof, employee, space, emp);
// failure on above line
}
"en utilisant" 'opérateur <<' ne a rien là. Pourquoi diable copier un fichier mapping dans un flux de chaîne? Pourquoi votre code est-il cassé et non autonome? – sehe