Est ce qu'il existe une fonction en c ou c++ qui permet de faire un split
d'une chaîne de caractères en fonction du délimiteur choisi?
Peut on le faire avec sscanf?
"Dominique Baldo" a écrit dans le message de news:
Arnaud Meurgues nous disait
Sanjiv SOOTEEHALL wrote:
Est ce qu'il existe une fonction en c ou c++ qui permet de faire un split
d'une chaîne de caractères en fonction du délimiteur choisi?
En C, on utilisera plutôt strtok.
ou strsep qui existe dans certaines librairies et qui a l'avantage d'être réentrant et de traiter correctement les champs vides
On peut utiliser getline en C++, qui permet de spécifier le délimiteur...
Chris
kanze
Arnaud Meurgues wrote in message news:...
Sanjiv SOOTEEHALL wrote:
Est ce qu'il existe une fonction en c ou c++ qui permet de faire un split d'une chaîne de caractères en fonction du délimiteur choisi?
En C ou en C++ ? La réponse n'a rien à voir.
En C++, on utilisera std::string et son interface (substr, find). En C, on utilisera plutôt strtok.
D'abord, même en C, on n'utilise pas strtok -- c'est comme gets ou sprintf : une erreur garantie à la longue.
En C++, on écrirait plutôt une classe, comme mes « FieldArray » (disponible à www.gabi-soft.fr), qui utilise un délégué pour définir comment découper une chaîne en champs. (Il existe deux délégués tout faits : un qui découpe sur des espaces blancs, et l'autre sur un caractère fixe. Dans le temps, j'en avais aussi un qui découpait selon une expression rationnelle, mais puisque je veux passer à la classe Boost pour les expressions rationnelles, il a disparu, en attendant que je trouve du temps.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Arnaud Meurgues <arnaud@meurgues.non.fr.invalid> wrote in message
news:<3F0C144C.6090301@meurgues.non.fr.invalid>...
Sanjiv SOOTEEHALL wrote:
Est ce qu'il existe une fonction en c ou c++ qui permet de faire un
split d'une chaîne de caractères en fonction du délimiteur choisi?
En C ou en C++ ? La réponse n'a rien à voir.
En C++, on utilisera std::string et son interface (substr, find).
En C, on utilisera plutôt strtok.
D'abord, même en C, on n'utilise pas strtok -- c'est comme gets ou
sprintf : une erreur garantie à la longue.
En C++, on écrirait plutôt une classe, comme mes « FieldArray »
(disponible à www.gabi-soft.fr), qui utilise un délégué pour définir
comment découper une chaîne en champs. (Il existe deux délégués tout
faits : un qui découpe sur des espaces blancs, et l'autre sur un
caractère fixe. Dans le temps, j'en avais aussi un qui découpait selon
une expression rationnelle, mais puisque je veux passer à la classe
Boost pour les expressions rationnelles, il a disparu, en attendant que
je trouve du temps.)
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Est ce qu'il existe une fonction en c ou c++ qui permet de faire un split d'une chaîne de caractères en fonction du délimiteur choisi?
En C ou en C++ ? La réponse n'a rien à voir.
En C++, on utilisera std::string et son interface (substr, find). En C, on utilisera plutôt strtok.
D'abord, même en C, on n'utilise pas strtok -- c'est comme gets ou sprintf : une erreur garantie à la longue.
En C++, on écrirait plutôt une classe, comme mes « FieldArray » (disponible à www.gabi-soft.fr), qui utilise un délégué pour définir comment découper une chaîne en champs. (Il existe deux délégués tout faits : un qui découpe sur des espaces blancs, et l'autre sur un caractère fixe. Dans le temps, j'en avais aussi un qui découpait selon une expression rationnelle, mais puisque je veux passer à la classe Boost pour les expressions rationnelles, il a disparu, en attendant que je trouve du temps.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16