[c++]Problème avec les flux

Bonjour, j’ai le code suivant :

struct txt{
const char* texte;

};

int main(){
stringstream message,message2;
int var1=5,var2=7;
txt txtniv;

message<<"numero ";
message<<var1;
txtniv.texte=message.str().c_str();
cout<<txtniv.texte<<endl;
message2<<"voici le ";
message2<<var2;
txtniv.texte2=message2.str().c_str();
cout<<txtniv.texte<<endl;
cout<<txtniv.texte2<<endl;}

Cependant, je ne comprend pas pourquoi, ce qui s’affiche sur la console est :
voici le 7
voici le 7

alors que ca devrait etre
numero 5
voici le 7

Comment faire pour obtenir cela ?

Merci d’avance

Si tu pouvais être un peu plus précis?

Heu, le champ “texte2” n’existe pas pour la structure “txt”… c’est même pas censé marcher ce code (ou alors, j’ai oublié un truc).

Sinon, tu cout (tes deux dernières lignes de code) 2 fois le même objet “txtniv” (de type “txt”), c’est donc normal qu’il y ait 2 fois la même ligne.

PS : Edite ton message et mets ton code entre les balises [ CODE ] et [ /CODE ]

Raynor> non justement. La première affiche texte, la seconde texte 2

Mais son programme est comme tu le dis incomplet


#include <sstream>
#include <iostream>

using namespace std;

// ca sert à rien, on est en C++, pas en C ...
struct txt{
const char* texte;
};

int main(){
string       txtniv1,txtniv2;
stringstream message1,message2;
int          var1=5,var2=7;

message1 << "numero ";
message1 << var1;
txtniv1  = message1.str().c_str();
cout     << txtniv1 << endl;

message2 << "voici le ";
message2 << var2;
txtniv2  = message2.str().c_str();
cout     << txtniv1 <<endl;
cout     << txtniv2 <<endl;
     
 return 0;
}

Mea culpa, Mea culpa, Mea maxima culpa :wink:

effectivement j’ai oublié dans la structure texte2 mais bon, par contre le programme de karlkox marche correctement.

Ainsi donc la structure est :


struct txt{
const char* texte,texte2;
};

Pour que txtniv1 et txtniv2 soient enregistrés dans txtniv (objet de type txt), comment faire ?

La classe std::string est là pour remplacer les vieux char*.

ok merci