sebastienmz
Messages postés139Date d'inscriptionmardi 16 mai 2006StatutMembreDernière intervention23 juin 2008
-
17 nov. 2006 à 11:49
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 2013
-
17 nov. 2006 à 17:46
Bonjour j'ai une string qui contien la date dans ce format : Fri Nov 17 11:43:56 2006
et j'aimerais
mettre chaque partie dans une char différente par exemple :
date = 17
jour = Fri
mois = Nov
annee = 2006
heure = 11
minutes = 43
sec = 56
comment faire ?
-----
Sébastien Metthez
www.sebastien-metthez.com
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 17 nov. 2006 à 14:24
Salut:
Voici une solution, quoique les gens ici détestent l'utilisation de "strtok". Comme ça tu as au moins une idée claire de ce qu'il faut faire.
#include <string.h>
#include
using namespace std;
char ** tokenize (char * s, const char * delimiter, int n)
{
char ** res = new char * [n];
char * sep = strtok (s, delimiter);
int i = 0;
while (sep)
{
res [i++] = strdup (sep);
sep = strtok (NULL, delimiter);
}
return res;
}
int main(int argc, char *argv[])
{
char str [] = "Fri Nov 17 11:43:56 2006";
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 17 nov. 2006 à 12:02
Salut,
Il n'y a pas de fonction toute faite dans la classe string, il te faudra la coder toi-même. A priori, pas de souci majeur car toutes tes données sont séparées par des espaces...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 17 nov. 2006 à 14:26
Salut:
J'ai oublié de libérer l'espace mémoire utilisé vers la fin du programme:
ajoutes ceci après l'affichage:
delete [] tokens1;
delete [] tokens2;
Vous n’avez pas trouvé la réponse que vous recherchez ?
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 17 nov. 2006 à 14:32
Soit tu parcours ta chaine avec 2 pointeurs, tu bouges le second jusqu'à trouver un espace, tu traites ce qui se trouve entre les 2 pointeurs et tu recommence...
Soit tu utilises la fonction sscanf().
string truc="Fri Nov 17 11:43:56 2006";
char j[4],m[4];
int d,h,mm,s,a;
sscanf(truc.c_str(),"%3s %3s %d %d:%d:%d %d",j,m,&d,&h,&mm,&s,&a);
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 17 nov. 2006 à 14:46
En précisant ton environnement dès le départ, tu aurais eu une réponse plus adéquate...
Les new du C++ sont les malloc du C
Après, à toi d'adapter...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 17 nov. 2006 à 17:46
Salut:
Je veux critiquer ma solution si tu utilises plusieurs threads qui fait chacun appel à la fonction "strtok" ça risque de donner des résultats erronés.
Mais dans ton cas comme tu utilises "strtok" dans une simple programme monothread
cette fonction est l'idéale solution pour toi.
Sinon tu peux créer ta propre fonction/classe pour faire le même travail.