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
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 laet dans plein de sujets sur ce forum.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Il y a une fonction split dans boost::string_algo : http://www.boost.org/doc/html/string...html#id2743220
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
J'ai esseyé celle de la faq mais elle ne fonctionne pas.Envoyé par Laurent Gomila
Il ne trouve pas la fonction getline à 3 parametres
La premiere boucle semble bien fonctionner quand elle est seule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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: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 : Sélectionner tout - Visualiser dans une fenêtre à part 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érifier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
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 "\".
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string chaine = "qdfqsd\\aaa2"; string val = chaine.rfind("\\");
(je ne suis pas à l'abri d'une erruer de 1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string chaine = "qdfqsd\\aaa2"; string val = chaine.substr(chaine.rfind('\\')+1);
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Partager