Bonjour,

J'ai vu pas mal d'info expliquant comment rediriger un flux de sortie (cout / cerr / clog) dans un autre flux (fichier par exemple).

Seulement la méthodes que j'ai trouvée ne fonctionne pas dans le cas où les sorties se font dans une DLL tierce utilisée par mon application ...

Disons que j'ai mon projet VC ++ avec mes classes, une référence vers les .h de ma librairie tierce et le .lib de la librairie en question.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include <malib/classe1.h>
int main ()
{
    std::ofstream Out("C:/test.txt");
    std::streambuf* OldBuf = std::clog.rdbuf(Out.rdbuf());
 
    std::clog << "Affichage dans le fichier, super !" << std::endl;
    classe1 c;
    c.sayHello();
    return 1;
}
le "hello world" qu'affiche sayHello() se fait dans la console et non dans mon fichier.
C'est exemple est simpliste, et même si j'ai les sources de ma librairie tierce je me vois mal re-modifier la brouette de classes pour rediriger chaque méthode faisant des clog ...

Est-ce qu'il existe un moyen de rediriger les sorties (clog, cerr et cout) sans modifier cette librairie ?

merci