Sos : Conversion C / C++

PascalBernard57 Messages postés 15 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 7 juin 2011 - 8 sept. 2006 à 20:04
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 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.

Merci par avance !

15 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
8 sept. 2006 à 20:30
C'est quoi un TimeStamp ?
0
Utilisateur anonyme
8 sept. 2006 à 20:51
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

MaLaDeDeDe 97one 
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 sept. 2006 à 21:47
Pour répondre à la question, l'éauivalent de sprintf serait un ostringstream. Petit exemple:

#include <sstream>
#include <string>

using namespace std;

int main()
{
  ostringstream ost;
  ost << TimeStamp << endl;

  string s = ost.str();
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 sept. 2006 à 21:49
En relisant ton message, je suis pas trop sûr d'avoir compris si tu travailles en C ou en C++

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
PascalBernard57 Messages postés 15 Date d'inscription vendredi 16 décembre 2005 Statut Membre Derniè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 !!!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
PascalBernard57 Messages postés 15 Date d'inscription vendredi 16 décembre 2005 Statut Membre Derniè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.

Merci BruNews pour ton idee

Je verifie tout de suite.

Merci a tous
Pascal
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 sept. 2006 à 13:09
Dans ce cas-là, oublie vite ma proposition

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 sept. 2006 à 18:59
A quoi ca fait référence ca:

en C, "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" <= ???
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 sept. 2006 à 19:30
Java

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
10 sept. 2006 à 01:49
Oui mais ca: "je maitrise mes allocations memoire, ce qui n'est pas le cas en C++". Je comprends pas.
0
PascalBernard57 Messages postés 15 Date d'inscription vendredi 16 décembre 2005 Statut Membre Derniè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 ...

Merci
Pascal
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
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).
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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++)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous