Récupérer les éléments d'une chaine - C++ - Programmation
Marsh Posté le 13-05-2003 à 12:10:14
Merde alors, je l'avais vu dans la doc, mais quand j'ai vu token dans l'explication de la fonction, j'ai cherché autre part...
Merci!!
Marsh Posté le 13-05-2003 à 13:35:09
Bon alors j'en suis là:
Code :
|
Ya pas de moyen de réduire?
Comme par exemple éviter de déclarer PremierItem pour récupérer juste le 1er élément?
Marsh Posté le 13-05-2003 à 13:55:46
Si tu es en C++ et que tu utilises des strings, je ne pense pas que ce soit intéressant d'utiliser strtok. De plus, tu as au moins une erreur dans ton programme (bizarre qu'elle n'ai pas été reportée) : la fonction c_str() renvoie un const char * et non pas un char *.
Pour ma part, j'écrirais plutôt ton code comme ça :
Code :
|
edit: correction des bugs trouvés plus tard (merci ++Taz)
Marsh Posté le 13-05-2003 à 13:59:11
super mais ça ne fonctionne pas... faut passer le vecteur par reference et le char par reference. je teste pas mais dans l'idée, c'est ça
mais moi je verrai plutot (pas testé)
Code :
|
edit 2: doit fonctionner
Marsh Posté le 13-05-2003 à 14:19:12
++Taz a écrit : ...faut passer le vecteur par reference... |
Ah oui, j'ai oublié... De même qu'en relisant ton code, je me suis rendu compte que j'avais fait une erreur dans le substr.
Ton code a pas l'air mal (surtout qu'il fait un strip des caractères) mais il y a au moins un problème :
Code :
|
Edit : Grillé par l'edit...
Marsh Posté le 23-05-2003 à 12:46:45
++Taz a écrit :
|
Merci, avec du retard, mais j'avais oublié ce topic...
Sinon par rapport à ce code, je voulais savoir pourquoi mettre des const?
J'ai essayé sans et ça marche bien aussi, mais bon je les ai laissé parce que je me dis que tu ne les as pas mis là sans raison...
Marsh Posté le 23-05-2003 à 13:07:09
haazheel a écrit : Bon alors j'en suis là:
|
détail : ds le 1er appel a strtok, faut mettre ta chaine en question, mais pour parser toute cette chaine juska la fin, faut appeler strtok avec NULL comme 1er parametre.
exemple des man :
Code :
|
Marsh Posté le 23-05-2003 à 13:12:49
haazheel a écrit : |
Les variables déclarées en const ne peuvent pas être modifiées, sauf sur instruction explicite. Les arguments spécifiés en const dans le prototype de la fonction n'ont aucune raison d'être modifiés. S'ils le sont, alors le compilateur retournera une erreur et mettra donc le droit sur une erreur. Cela permet donc des vérifications à la compilation. Et ce qui est fait à la compilation n'est plus à faire ensuite.
Marsh Posté le 23-05-2003 à 13:22:45
sowhatin22 a écrit : |
ok, mais dans la fonction que Taz a écrite, str et delimiters ne sont pas modifiées, elles sont juste lues...
alors on peut peut-être se passer à la fois du const et du passage par référence non?
Marsh Posté le 23-05-2003 à 13:39:03
sowhatin22 a écrit : |
tu sous-entends quoi, là ?
Marsh Posté le 23-05-2003 à 13:40:24
haazheel a écrit : |
Les const, c'est utilisé comme garde-fou, pour être sur qu'on ne va pas se planter lamentablement et modifier une variable qui ne devrait pas l'être, et c'est aussi bien plus explicite pour les personnes qui te relisent ...
Edit : Donc on les garde, là ....
Marsh Posté le 23-05-2003 à 14:15:20
ok pour les const...
mais le passage par référence n'est pas superflu?
Marsh Posté le 23-05-2003 à 14:18:06
haazheel a écrit : ok pour les const... |
Je laisse quelqu'un qui est habitué à l'utilisation de std::string expliquer ...
Marsh Posté le 13-05-2003 à 12:03:23
Salut,
alors, j'ai:
Je voudrais créer une boucle qui me donne les différents éléments contenus entre les ,
J'ai essayé avec strchr, mais ça marche pas, car il me renvoie ce qui vient après la virgule...
Comment je peux faire ça?