IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 14 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

Voici une fonction permettant de découper une chaîne selon un motif:
Avatar de Davidbrcz
Rédacteur https://www.developpez.com
Le 14/04/2011 à 19:42
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), " ");
Avatar de
https://www.developpez.com
Le 15/04/2011 à 11:58
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)
{
/* .... */
}
Avatar de Luc Hermitte
Expert éminent sénior https://www.developpez.com
Le 15/04/2011 à 13:58
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:
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.