Maison > développement back-end > C++ > Comment rediriger stdout/stderr vers une chaîne en C ?

Comment rediriger stdout/stderr vers une chaîne en C ?

Mary-Kate Olsen
Libérer: 2024-11-03 03:43:02
original
553 Les gens l'ont consulté

How to Redirect stdout/stderr to a String in C  ?

Redirection de stdout/stderr vers une chaîne en C

Bien qu'il existe de nombreuses discussions sur la redirection de stdout/stderr vers des fichiers, c'est également possible pour rediriger ces sorties vers une chaîne. Cet article explique comment y parvenir à l'aide de std::stringstream et d'une classe guard.

Réponse :

Pour rediriger stdout/stderr vers une chaîne, vous peut utiliser std::stringstream. Voici comment cela fonctionne :

<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 now contains "Bla\n"</code>
Copier après la connexion

Cette méthode capture la sortie de la console dans une chaîne.

Pour garantir un nettoyage correct, vous pouvez utiliser 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

En utilisant cette protection, vous pouvez être assuré que le tampon est toujours réinitialisé, garantissant ainsi une bonne gestion des E/S de la console.

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!

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