Salut,
Comme je commence à peine à m'intéresser à la bibliotheque boost, je peux me tromper, mais il semblerait que, effectivement, ce soit tip-top ce que tu cherches 
Un code (inclusions comprises) pour la ligne que tu donnes en exemple, du genre de
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main()
{
std::string str = "SI mot1:=valeur1 et mot2>valeur2 Alors mot3<Valeur3";
typedef boost::tokenizer<boost::char_separator<char> >
tokenizer;
boost::char_separator<char> sep(" ");
tokenizer tokens(str, sep);
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
std::cout << "<" << *tok_iter << "> ";
std::cout << "\n";
return EXIT_SUCCESS;
} |
te donnerait une sortie du genre de
<Si> <mot1:=valeur> <et> <mot2>valeur2> <Alors> <mot3<Valeur3>
(parce que le code demande expressément, ici, d'entourer les terme de < et >
)
Si, en plus, tu prévois une gestion spéciale pour les "termes spéciaux" (ici: Si, et et Alors), ou que tu considère les caracteres =,< et > (et peut etre d'autres, comme ( { etc) comme séparateurs potentiels (par exemple
) tu pourras parser tes chaines selon ta bonne convenance...
Partager