Téléchargé 4 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 23 janvier 2017
Langue : Français
Référencé dans
Navigation
Découper une chaîne
Découper une chaîne
Voici une fonction permettant de découper une chaîne selon un motif:
Je me permets de donner un moyen d'appeler la fonction car ce n'est pas super clair
Code : | Sélectionner tout |
1 2 3 | std::vector<std::string> res; split("foo bar nun chuck", std::back_inserter(res), " "); |
Il pourrait être interressant de généraliser cette fonction pour toutes les basic_strings, non ?
Code : | Sélectionner tout |
1 2 3 4 5 6 | template < class CharType, class OO, class Sep, class CTraits = std::char_traits<CharType>, class CAlloc = std::allocator<CharType> > OO split(std::basic_string<CharType, CTraits, CAlloc> const& source, OO dest, Sep separator) { /* .... */ } |
En fait, il manque les codes d'exemple qui avaient accompagné la définition dans le post d'origine: http://www.developpez.net/forums/d23...e/#post2842014
Sinon, oui, généraliser est une bonne idée.
Autre note, si on veut supporter plusieurs séparateurs (pour comprendre des formats comme: "x = 42"), il faut remplacer "p = p2 + 1" par:
PS: je l'ai pondu sans regarder ailleurs en même temps, au moment de répondre au post sur le forum, sauf émergence involontaire et spontanée du même code ailleurs et en même temps, considérez que c'est sous licence boost BSL.
Sinon, oui, généraliser est une bonne idée.
Autre note, si on veut supporter plusieurs séparateurs (pour comprendre des formats comme: "x = 42"), il faut remplacer "p = p2 + 1" par:
Code c++ : | Sélectionner tout |
p = source.find_first_not_of(sep, p2 + 1);
PS: je l'ai pondu sans regarder ailleurs en même temps, au moment de répondre au post sur le forum, sauf émergence involontaire et spontanée du même code ailleurs et en même temps, considérez que c'est sous licence boost BSL.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.