2010-06-02 3 views
0

Je veux mettre de l'espace entre les ponctuations et d'autres mots dans une phrase. Mais boost :: regex_replace() remplace la ponctuation par de l'espace, et je veux garder une ponctuation dans la phrase! par exemple dans ce code, la sortie doit être « Bonjour. Salut, »Comment insérer le format str et ne pas supprimer l'expression régulière correspondante dans la chaîne d'entrée dans boost :: regex_replace() en C++?

regex e1("[.,]"); 
std::basic_string<char> str = "Hello.hi,"; 
std::basic_string<char> fmt = " "; 
cout<<regex_replace(str, e1, fmt)<<endl; 

Pouvez-vous me aider?

Répondre

1

Vous devez utiliser une variable de remplacement dans votre chaîne fmt. Si je comprends bien la documentation, alors en l'absence d'un champ flags, vous devrez utiliser un Boost-Extended format string.

Dans ce sous-langue, vous utilisez $& pour signifier tout ce qui a été adapté, de sorte que vous devriez essayer de définir fmt comme:

std::basic_string<char> fmt = " $& ";

Cela devrait changer chaque signe de ponctuation dans ce même caractère, entouré par des espaces.

+1

et il peut remplacer son std :: basic_string par juste std :: string – Nikko

+0

Oui, je l'avais remarqué, mais j'ai décidé de me concentrer sur la réponse à la question posée. – swestrup

Questions connexes