begin process at 2012 05 30 09:02:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

séparateur dans un string


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

séparateur dans un string

mercredi 23 juin 2010 à 11:37:09 | séparateur dans un string

fadoch

Bonjour à tous,
je cherche à découper une chaîne en fonction d'un séparateur, jusqu'à là ça va.
mon problème c'est que mon séparateur peut être un espace ou une tabulation.
je sais qu'en PERL il existe "\s" qui englobe tout ce qui est espace vide de caractères. existe t-il un équivalent en C++?
merci beaucoup.
mercredi 23 juin 2010 à 12:12:59 | Re : séparateur dans un string

CptPingu

Administrateur CodeS-SourceS
Tu peux utiliser getline dans un stringstream. getline à un troisième argument pour spécifier le type de délimiteur (par défaut c'est \n). Mais on ne peut pas prendre plusieurs délimiteurs.
http://www.cplusplus.com/reference/string/getline/

La solution consiste à utiliser boost pour le faire. Il y a une méthode "split" qui permet de faire cela.
On lui donne les délimiteurs, et il se débrouille pour couper la chaîne. \s => " \n\t\v\r\f"

A noter que cet exemple n'est pas optimisé, car on créer un nouveau std::string pour chaque élément.
Si on veut juste avoir des références sur les éléments, il faut utiliser un: std::list<boost::iterator_range<std::string::iterator>> à la place d'un std::vector<std::string>.

Code C/C++ :
#include <iostream>
#include <vector>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string.hpp>

int main()
{
  const std::string line = "Une ligne    separee par des"
    "   espaces et es \n saut de lignes\n\n mutliples, ainsi que"
    "  \t\t  des \ttabulations";

  std::cout << line << std::endl; 

  std::vector<std::string> tab;
  boost::split(tab, line, boost::algorithm::is_any_of(" \n\t\v\r\f"),
	       boost::token_compress_on);

  for (std::vector<std::string>::const_iterator it = tab.begin();
       it != tab.end(); ++it)
    std::cout << "<" << *it << ">" << std::endl;

  return 0;
}


_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio


Cette discussion est classée dans : string, espace, existe, séparateur


Répondre à ce message

Sujets en rapport avec ce message

Ecriture de fichier texte & Séparateur !! [ par Misutsu ] bonjour :)C'est la première fois que j'ai à utiliser des fichiers en C++, et je vois que l'espace sert de séparateur.Dans mon cas, j'ai besoin d'enreg longeur d'une string [ par angelique ] Bonjour, je n'arrive pas à retourner la longueur d'une srting :string result_s;result_s = vertex_label(boost::target(*ei, g), g); int longueur = strl longeur d'une string [ par angelique ] Bonjour, je n'arrive pas à retourner la longueur d'une srting :string result_s;result_s = vertex_label(boost::target(*ei, g), g); int longueur = strl longeur d'une string [ par angelique ] Bonjour, je n'arrive pas à retourner la longueur d'une srting :string result_s;result_s = vertex_label(boost::target(*ei, g), g); int longueur = strl longeur d'une string [ par angelique ] Bonjour, je n'arrive pas à retourner la longueur d'une srting :string result_s;result_s = vertex_label(boost::target(*ei, g), g); int longueur = strl Executer un string ? [ par bob99 ] Bonjour tous le monde,je suis entrain de creer une application en opengl et j'ai creer des objet en un fichier.un objet est du styles (dans le fichier ASM en c++ - Bug d'interruption [ par madprog ] int a;char*string;void affiche(char*string){ for(a=0; string[a]; a++) { asm("movl $string, %eax"); asm("movl a, %ebx"); asm conversion double en string [ par bouba ] Bonjour, je réalise une fonction qui doit calculer le nombre de caractères d'un doubleexemple:-7.56 -> 5 caractèreExiste t'il une fonction qui fasse c tableau de char -> string [ par alfred289 ] bonjour,j'utilise BOrland C++ builder 5 et j'essaie de transformer un tableau de caractères en sring et je trouve pas commentmerci de votre aide conversion d'un string [ par bastiente ] Ba$t :bonjour... Voila je travaille sur un fichier ou figure la valeur : 32 989,88Je dois la retourner dan un autre fichier. Ca c'est fait, mai je doi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales