PascalBernard57
Messages postés15Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention 7 juin 2011
-
8 sept. 2006 à 20:04
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
10 sept. 2006 à 12:17
Bonjour
Je travaill en C avec des objets bizare en C++ et : J'ai un gros PROBLEME !!
J'ai un objet C++ dont je ne connait pas la structure : c'est un "TimeStamp"
Si je fait :
cout << TimeStamp << endl;
c'a saffiche correctement.
Mais j'ai besoin de récupérer le texte équivalent a celui qui est affiché dans une chaine !
char MonTS [256]; // La chaine qui doit contenir le resultat !
Et j'ai pas trouvé en C++ l'équivalent de sprintf en C !
Toutes les explications sont les bienvenues.
Au cas ou mon compilateur est Vs6.
c'est pas grave sprintf c'est aussi du C++ te prends pas la tete.
Et la structure bein elle est forcement quelque part :s
Si tu as Visual C++ tu devrais la retrouver en quelque seconde en fesant bouton droit sur TimeStamp :p
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 8 sept. 2006 à 21:06
luhtor >
TimeStamp = date1 - Date2;
C'est juste un écart entre 2 dates, un pauvre 'long' qu'on masque dans un OBJET, ça fait joli et c'est + lent, de quoi satisfaire les PlusPlusIstes forcenés.
PascalBernard57
Messages postés15Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention 7 juin 2011 8 sept. 2006 à 22:01
Merci MaLaDeDeDe 97one
Je vais essayer de faire (bouton droit)
En fait je n'utilise Vs6 que pour compiler en ligne, j'ai jammais essayé de visualiser mes sources sous l'environnement (J'y ai jammais pensé !)
Comment c'a marche un sprintf en C++
C'est la même syntaxe qu'en C ?
Merci BruNews
Mais selon la faible doc dont je dispose, ce n'est ni une structure tm ni un long comme clock_t. La structure fait 36 byte de long ! et elle n'est pas decrite !!!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 8 sept. 2006 à 22:17
les dates sont au format timeOle, un double à base 0 pour 30/12/1899,.
TimeStamp soustrait et range les parties dans différentes variables.
Regarde sur MSDN ou dans les fichiers MFC, tu auras le détail.
PascalBernard57
Messages postés15Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention 7 juin 2011 9 sept. 2006 à 13:07
Merci Vecchio56 pour ta réponse
Jessayerais ton idee.
Pour repondre a ta question : Je travaille en C pur et dur (Pour la maitrise et la rapidite : pour chaque ligne de C ecrite j'ai une idee du nombre de ligne assembleur generee et je maitrise mes allocations memoire, ce qui n'est pas le cas en C++ et je ne pale meme pas du modele de memoire d'un certain J..)
Mes progammes sont tous en mode Batch mais je suis parfois oblige de travailler avec des librairies C++ et ici c'est avec les ".h" !!! et quelques pages de doc de merde.
PascalBernard57
Messages postés15Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention 7 juin 2011 10 sept. 2006 à 08:22
Merci a tous
Je pense que pour ma question Vecchio56 ma donne la meilleure piste. (merci a toi)
Pour la gestion de la memoire :
Le Java presente des lacunes fondamentales en environnement Multi processeur (Aix, Sun, NT, ...) avec des fuite memoire, des ralentissements aleatoire, ... qui ne peuvent pas etre resolus.
Ce qui me gene en C++ par rapport au C c'est par exemple
en C si je declare une variable locale a l'interieur d'une paire { }, elle sera construite sur la pile lors de la compilation par le simple ajout d'un offset sur la valeur d'un registre du proc et automatiquement effacee a la sortie en 1 instruction processeur.
en C++ si je declare une variable xx toto = new xx ou ~toto le code assembleur genere est enorme !
En plus il y a la question de la synchronisation :
Dans un programme en phase de construction, j'ai melange des cout << "Commentaire"; et des printf ("Commentaire"); consecutifs = 1°ligne cout, 2°ligne printf;
en sortie les messages ne sont pas sequenciels mais regroupes en fonction des buffers internes des deux mecanismes.
En C, je sais allouer une zone memoire globale que je gererais avec des pointeurs, l'allocation et ou la liberation sont immediatement effectuees.
En C++ c'est dé-synchronisé. Si j'alloue une grosse zone memoire, puis je la libere puis je la realloue a une autre variable, je peu me retrouver avec les deux zones allouees en memoire simultanement.
C'est pas blocant sauf dans le cas theorique ou les variables a+b prennent ensemble plus de 2Go en NT par exemple, mais je ressent cela comme une perte de controle.
Je ne me sent plus maitre de la concordance entre le sequencement des lignes de mon programme et celui de l'execution des fonctions. Et j'aime pas ca.
En tout cas, merci a tous ceux qui ont repondu a mon appel.
Je laisse ce fil de discution ouvert ...
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 10 sept. 2006 à 12:09
Je comprend pas, tu compares la création d'une variable statique (en C)
et la création d'une variable dynamique en C++. Alors forcément, ca me
parait logique que le code généré soit pas le meme...
Mélanger "cout" et "printf" c'est quoi l'intéret a part faire un code incohérent ?
Et pour le dernier point, tu as un site ou de la doc qui parle de ca
(différence delete/free) ? (car je suis très sceptique ^^, j'ai jamais
entendu de telles choses).
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 10 sept. 2006 à 12:17
Je suis d'accord avec luhtor, aucun argument n'est recevable a mon avis. Tu compare des choses différentes (allocation statique en C / alloction dynamique en C++)
Quant à ton histoire de synchronisation, j'aimerais bien savoir d'ou tu sors ca
Pour les cout et les printf, tu n'aura plus de problèmes si tu n'utilises que cout (et printf n'a rien a faire dans un programmme C++)