Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interception de cout

1 réponse
Avatar
Yann Renard
Bonjour,

est il possible d'intercepter les appels aux opérateurs << de std::cout
et std::cerr dans un objet "custom" ?

Merci d'avance,
Yann Renard

1 réponse

Avatar
Michel Decima
Bonjour,

est il possible d'intercepter les appels aux opérateurs << de std::cout
et std::cerr dans un objet "custom" ?


Que veux tu faire exactement ? rediriger les sorties de std::cout et
std::cerr par exemple ? Dans ce cas, ca peut ressembler a ceci:

int main() {
std::streambuf* oldOutBuf = std::cout.rdbuf() ;
std::ofstream oufFile( "toto.txt" ) ;
std::cout.rdbuf( outFile.rdbuf() ) ;

std::cout << "blah, blah..." << std::endl;

outFile.close() ;
std::cout.rdbuf( oldOutBuf ) ;
}

L'idee, c'est qu'on peut remplacer le streambuf d'un stream existant
par un autre, en prenant la precaution de remettre l'original en place
apres.