Sos : Conversion C / C++

Signaler
Messages postés
15
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
7 juin 2011
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
-
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

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
C'est quoi un TimeStamp ?

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 
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
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++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
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
Messages postés
15
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
7 juin 2011

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 !!!
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
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++
Messages postés
15
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
7 juin 2011

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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Dans ce cas-là, oublie vite ma proposition

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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" <= ???
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Java

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oui mais ca: "je maitrise mes allocations memoire, ce qui n'est pas le cas en C++". Je comprends pas.
Messages postés
15
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
7 juin 2011

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