Alternative à la fonction strtok ? [Résolu]

Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 20 oct. 2005 à 21:35 - Dernière réponse :
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Dernière intervention
5 octobre 2006
- 20 oct. 2005 à 22:45
Bonjour je cherche une alternative a cette fonction car je trouve quelle n'est vraiment pas bien (disons pas adapté pour mon utilisation) En réalité je ne peut utiliser strtok car je suis en multi tache et strtok semble utiliser une variable globale ... bref je veut utiliser autre chose !

Je veut séparer une string avec comme délimitateur ";"

Je ne peut pas utiliser getline non plus car le type que je recoit est une string

ex: std::string sData="ppp;aaa;bbb"

Merci !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Dernière intervention
5 octobre 2006
- 20 oct. 2005 à 21:45
3
Merci
Salut,

si ton seul problème est le multithread.

tu peux utiliser strtok_r qui résoud ton problème.



sinon pour le découpage tu peux faire find toi-même du ';'

ou une bonne méthode bourrin : utiliser un istringstream

sur ta std::string puis un getline en précisant le séparateur ici ';'

ex: (non compilé mais c'est pour l'idée)



string line = "aaaa;bbbb;cccc";

istringstream iss( line );

string word;

while( getline( iss, word, ';' ) )

cout << word << endl;



je te laisse en exercice la version avec les find ;)

Ma participation à la saturation du net:
http://hylvenir.free.fr

Merci Hylvenir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Hylvenir
Meilleure réponse
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Dernière intervention
5 octobre 2006
- 20 oct. 2005 à 22:22
3
Merci
"Bon pour istringstream j'y avais penser mais je peut pas car je recoit un type string et non istringstream"



pourquoi tu peux pas créer un istringstream à partir de ta std::string. ?



sinon, tu découpes toi même avec std::string.find




Ma participation à la saturation du net:
http://hylvenir.free.fr

Merci Hylvenir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Hylvenir
Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 20 oct. 2005 à 21:50
0
Merci
Bon pour istringstream j'y avais penser mais je peut pas car je recoit un type string et non istringstream


strtok_r : c'est la version récursive c'est ca , mais je ne toruve pas d'info la dessus , elle semble absente de msdn. Quelle include prend t'elle ? J'avais trouvé en effectuant des recherches mais vut quelle n'est pas sur msdn je galère.

char *strtok_r (char *s‚ const char *delim‚ char **ptrptr);
Commenter la réponse de cs_chuckboy
Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 20 oct. 2005 à 22:42
0
Merci
Merci beaucoup , j'ai regler mon probleme avec ta solution , j'ai etuliser un istringstream.

Au fait , il ont fumer la moquette quand il ont creer strtok ?? Sérieusement , ca modifie la string que tu lui passe en parametre et utilise une variable globale privé, wow ! c'est pas trop dur d'avoir des problème avec ca ... c'est loin d'être multi thread proove
Commenter la réponse de cs_chuckboy
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Dernière intervention
5 octobre 2006
- 20 oct. 2005 à 22:45
0
Merci
c'était pas le but à l'époque.

mais en effet, ça peut crainde.

Ma participation à la saturation du net:
http://hylvenir.free.fr
Commenter la réponse de Hylvenir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.