Rediriger le flux cout vers une chaine

tanguy_laverdure Messages postés 34 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 12 mai 2004 - 19 mars 2004 à 09:58
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 22 mars 2004 à 19:53
Bonjour,

J'utilise la méthode ci-dessous pour afficher dans la fenetre console des informations.

void __fastcall Solution::Affiche()
{
cout << "SOLUTION : " << _iIndexSolution << endl << endl;
cout << " Algorithme : " << _sAlgo << endl;
cout << " Distance : " << _dDistance << endl;
}

Cependant, par moment, je voudrais pouvoir utiliser cette meme methode par rediriger ceci vers une chaine (string)
je pense qu'on doit pouvoir rediriger le flux de sortie vers autre chose que le flux stardard (c'est a dire une fenetre console)
Comment faire ?
Merci,

7 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 mars 2004 à 16:17
cout pas vraiment la console (trop reducteur) mais la sortie standard du programme, la console ne fait que l'afficher

sinon je suis pas sur d'avoir compris car pour moi il suffirait de remplacer cout par une string, concretement tu ve l'utiliser comment cette fonction?
0
tanguy_laverdure Messages postés 34 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 12 mai 2004
19 mars 2004 à 17:37
En fait, je voudrait faire quelque chose avant d'utiliser ma methode Affiche() de telle sorte que le cout soit envoyer dans une chaine de caractere au lieu de la sortie standart

Si on ne fait rien, comme mon appli eest en mode console, le resultat du cout s'affiche a l'ecran (dans une fenetre dos)

je voudrai ne pas envoyer cela dans la fenetre dos mais dans une chaine

Merci pour l'aide
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
19 mars 2004 à 17:40
il y a des classes déja prévues pour ca:

#include <sstream>

...

ostringstream ost;
ost << "bonjour";
string s = ost.str();

s contient maintenant "bonjour"
0
tanguy_laverdure Messages postés 34 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 12 mai 2004
22 mars 2004 à 13:16
J'ai bien compris mais en fait ,je souhaiterai pouvoir utiliser ma methode Affiche contenant des instructions cout et dans le cas ou je ne souhaite pas faire une sortie vers l'ecran, spécifier quelque chose, mais je ne sais pas quoi, avant l'appel a Affiche() du style

main()
{
...
// je veux une sortie ecran
Affiche();
...
// je ne veux pas une sortie ecran
instruction pour une sortie dans une chaine (toto >> cout)
Affiche();
...
}
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 12
22 mars 2004 à 16:53
Il suffit de mettre un paramètre ostream& out dans Affiche

Affiche(ostream& out)
{
out << ....
}

et tu peux appeler Affiche avec cout pour afficher sur l'écran, ou avec ost pour mettre dans la chaine
0
PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006
22 mars 2004 à 19:34
Ta juste à utiliser sprintf......tu peux mettre ce que tu veux dans ta chaine et la formaté

sprintf(char*, char* ....)

ex:

char texte[65];
int nombre = 3;

sprintf(texte, "le nombre est %d", nombre);
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
22 mars 2004 à 19:53
PunkDude424> ta solution ne lui convient pas a mon avis, puisuil veut un truc qui tantot écrit dans la console, tantot écrit dans un chaine, la manière la plus propre est d'utiliser un paramètre ostream
0