Rediriger le flux cout vers une chaine

Signaler
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
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

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
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?
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004

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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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"
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004

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();
...
}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
117
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
24 avril 2006

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);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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