Bonjour tout le monde,
Je suis un rescapé du C qui tente de retrouvé ses repère en C++.
Je tente de coupe un string en deux string suivant un espace.
J'ai chercher dans la FAQ, et je trouvé ce code :
Je trouve ça un peu complexe, surtout que en C j'aurais fait un bête sscanf avec le format "%s %s" pour couper deux chaines suivant un espace.
Code C++ : 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
20
21 #include <vector> #include <sstream> #include <iostream> #include <iterator> int main() { using namespace std; string str = "mot1 mot2 mot3 mot4 mot5 mot6"; vector<string> str_list; // liste de mots // remplir la liste de mots istringstream iss( str ); copy( istream_iterator<string>( iss ), istream_iterator<string>(), back_inserter( str_list ) ); return 0; }
Le code fournit par la FAQ est effectivement puissant, car il suppose que je ne connait pas le nombre d'espace, et le nombre de sous chaine que la chaine contient. Mais moi je sais que ma chaine ne contient que 2 sous chaine séparer par un espace, alors à quoi bon la liste?
Merci de me donner la méthode si vous pensez qu'il y a mieux. Et je pense bien qu'il y a mieux car en C ça ne fait qu'une ligne (comprenez j'adore *scanf).
Merci à vous
[EDIT] : J'ai oublié de vous dire que la chaine de base provient d'un fichier texte sous cette forme :Il faut lire la première ligne, ensuite diviser la ligne en deux chaines. Rien de mieux en C que fscanf() qui va me faire les deux étapes à elle toute seule(format "%s %s" toujours).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ligne1mot1 ligne1mot2 ligne2mot1 ligne2mot2
En PHP il y a la fonction explode.
Et en C++?
Encore merci
Partager