Bonjour,
je cherche une fonction explode qui permet de découper des String en fonction d'un caractere donné et qui met le tout dans un tableau
En fait je cherche la meme chose que la fonction explode en php :
http://fr.php.net/explode
Merci
Version imprimable
Bonjour,
je cherche une fonction explode qui permet de découper des String en fonction d'un caractere donné et qui met le tout dans un tableau
En fait je cherche la meme chose que la fonction explode en php :
http://fr.php.net/explode
Merci
La réponse est dans la :faq: et dans plein de sujets sur ce forum.
Il y a une fonction split dans boost::string_algo : http://www.boost.org/doc/html/string...html#id2743220
J'ai esseyé celle de la faq mais elle ne fonctionne pas.Citation:
Envoyé par Laurent Gomila
Il ne trouve pas la fonction getline à 3 parametres
La premiere boucle semble bien fonctionner quand elle est seule.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 std::ifstream fichier("chemin d'acces"); if ( fichier ) // ce test échoue si le fichier n'est pas ouvert { std::string ligne; // variable contenant chaque ligne lue std::string val; // cette boucle s'arrête dès qu'une erreur de lecture survient while ( std::getline(fichier, ligne) ) { // Découpage aux , while (std::getline(ligne, val, ',')) { // Code } } }
Erreurs :
edit:Citation:
fatal error C1903: impossible de récupérer à partir des erreurs précédentes ; arrêt de la compilation
error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : 2 arguments attendus - 3 fournis
error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : 2 arguments attendus - 3 fournis
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : impossible de déduire l'argument de modèle de 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::string'
fatal error C1903: impossible de récupérer à partir des erreurs précédentes ; arrêt de la compilation
je suis sous vc++.net 2003
relis la FAQ.Code:J'ai esseyé celle de la faq mais elle ne fonctionne pas.
en effet un petit détail m'avait échapé.
ce code à l'air de fonctionner :
J'ai plus qu'a vérifierCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 // le constructeur de ifstream permet d'ouvrir un fichier en lecture std::ifstream fichier("chemin"); if ( fichier ) // ce test échoue si le fichier n'est pas ouvert { std::string ligne; // variable contenant chaque ligne lue std::string val; // cette boucle s'arrête dès qu'une erreur de lecture survient while ( std::getline(fichier, ligne) ) { std::istringstream l(ligne); // Découpage aux , while (std::getline(l, val, ',')) { // Code } } }
Merci
J'ai une autre petite question :
J'ai une chaine de caractere qui represente un chemin d'acces à un fichier genre "c:\dossier\fichier.txt" et j'aimerai récuperer uniquement "fichier.txt" mais si je passe par ma méthode de "split" je suis obligé de tout parcourir jusqu'au dernier element pour obtenir mon nom de fichier ou il existe un autre moyen ?
La fonction rfind de std::string ?
Je ne comprend pas ce que fait exactement la fonction malgres des exemple trouvé sur le net :/ et comment m'en servir parceque si je cherche "\" il peut y en avoir plusieur dans ma chaine
rfind fait une recherche en partant de la fin. Donc tu vas bien trouver le dernier "\".
Je ne sais pas si c'est moi qui ne suis pas doué mais avec un exemple tout simple comme celui ci cela ne fonctionne pas :
:/Code:
1
2 string chaine = "qdfqsd\\aaa2"; string val = chaine.rfind("\\");
(je ne suis pas à l'abri d'une erruer de 1)Code:
1
2 string chaine = "qdfqsd\\aaa2"; string val = chaine.substr(chaine.rfind('\\')+1);
Merci beaucoup !!!
:hola::hola: