Question

Puis-je obtenir la chaîne avec l'expression régulière de std::regex? Ou devrais-je sauver un autre endroit si je veux l'utiliser plus tard?

coup de pouce que vous pouvez faire ceci:

boost::regex reg("pattern");
string p = reg.str();

ou utilisez << opérateur

cout << reg; imprimera modèle .

mais std::regex il n'y a pas str () ou l'opérateur <<. Dois-je enregistrer ma chaîne un autre endroit ou je ne peux pas le trouver?

Débogueur je peux voir ce que std::regex.

Était-ce utile?

La solution

Je viens de regarder dans N3225, section 28.4 (tête synopsis <regex>) et en effet, le modèle de basic_regex n'a pas de fonction membre str, et il n'y a pas operator<< fourni.

Le paragraphe 28.8 / 2 fournit un petit aperçu à ce sujet:

  

Objets de spécialisation de type de   basic_regex sont responsables de   convertir la séquence de charT   des objets à une représentation interne .   On ne précise pas quelle forme cette   la représentation prend, ni la façon dont il est   accès par des algorithmes qui fonctionnent sur   expressions régulières.

Ce que je comprends est que les mandats standard basic_regex peut être construit à partir const charT * mais ne nécessite pas la mise en œuvre de garder cette chaîne.

Autres conseils

Les docs MSDN semblent montrer qu'il n'y a pas publiquement de manière accessible pour récupérer le motif regex à partir d'un objet construit, donc je dirais que vous devez enregistrer vous-même la chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top