Je veux écrire un programme et permettre à l'utilisateur d'avoir le contrôle sur la journalisation du paquet en réglant le programme pour afficher la progression ou le désactiver.C++ Logging utilisant std :: ostream et std :: cout
Je sais que std::cout
est un std::ostream
avec la différence que std::cout
redirige les résultats vers la sortie standard.
Je souhaite que ma classe ait un membre std::ostream
dans lequel je me connecte. Ensuite, si l'utilisateur active l'affichage, ce membre sera attaché à std::cout
et affichera les résultats, sinon il ne le fera pas.
Ce que j'ai à l'esprit est quelque chose de semblable à ceci:
class log {
private:
std::ostream display;
public:
void func();
void show_display();
}
void log::func(){
display << "called by func";
}
void log::show_display(){
// redirect display to standard output
}
Y at-il de manière similaire ci-dessus pour le faire? Si non, comment puis-je avoir des résultats similaires?
Merci.
"à la différence que std :: cout place directement les résultats à l'écran." - Non, il écrit sur la sortie standard - vous pouvez rediriger cela à partir de votre shell. –
@NeilButterworth C'est tout à fait exact, je suis désolé pour l'erreur. Je vais éditer – Everyone
Vous pouvez l'utiliser pour le flux qui ignore la sortie: http://stackoverflow.com/a/11826666/951890 –