Bonjour à tous,
J'ai cherché dans la doc de boost::regex comment faire pour insérer une string après chaque match sur une autre string et j'y suis presque arrivé mais la je sèche.. D'ailleurs je me demande bien pourquoi je ne trouve pas de fonction qui le fasse déjà..
Voici la fonction qui insère le tag "test" dans la string "stringFile" après que chaque match de la regex "expression" soit trouvé.
Mais le problème, c'est que je dois avoir un dépassement au niveau des itérateurs parce que au final, soit le programme m'insère deux fois le tag, soit il plante, soit ca marche !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void insertFlags(std::string& stringFile, const boost::regex& expression) { std::string::iterator start, end; std::string::const_iterator start2, end2; std::string test("test;"); start2 = test.begin(); end2 = test.end(); start = stringFile.begin(); end = stringFile.end(); boost::match_results<std::string::iterator> what; boost::match_flag_type flags = boost::match_default; while(regex_search(start, end, what, expression, flags)) { stringFile.insert(what[0].second,start2,end2); start = what[0].second; end = stringFile.end(); } }
En fait, les différents cas que je viens d'énumérer apparaissent lorsque le dernier match a été fait et qu'il n'y a plus de résultat..
J'en peux plus.. HELP !!!![]()
Partager