Maison > développement back-end > C++ > Comment capturer la sortie standard et les flux d'erreurs dans une chaîne en C ?

Comment capturer la sortie standard et les flux d'erreurs dans une chaîne en C ?

Patricia Arquette
Libérer: 2024-11-04 01:24:30
original
328 Les gens l'ont consulté

How to Capture Standard Output and Error Streams in a String in C  ?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal