Comment rediriger la sortie vers une chaîne en C
Pour divers scénarios de débogage et de test, il peut être pratique de rediriger la sortie standard et l'erreur est transmise à une chaîne plutôt qu'à la console.
Solution : Utilisation de std::stringstream
Pour rediriger stdout/stderr vers une chaîne, vous pouvez utiliser le std ::stringstream class :
<code class="cpp">std::stringstream buffer; std::streambuf *old = std::cout.rdbuf(buffer.rdbuf()); std::cout << "Bla" << std::endl; std::string text = buffer.str(); // text will now contain "Bla\n"</code>
Classe de garde pour la réinitialisation du tampon
Pour garantir que le tampon est réinitialisé après la redirection, vous pouvez créer une classe de garde :
<code class="cpp">struct cout_redirect { cout_redirect(std::streambuf *new_buffer) : old(std::cout.rdbuf(new_buffer)) {} ~cout_redirect() { std::cout.rdbuf(old); } private: std::streambuf *old; };</code>
Cette classe de garde garantit que le tampon est toujours restauré à son état d'origine, même en cas d'exceptions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!