Maison > développement back-end > C++ > le corps du texte

Comment rediriger STDOUT vers une fonction personnalisée en C ?

Linda Hamilton
Libérer: 2024-10-29 18:37:04
original
922 Les gens l'ont consulté

How Can You Redirect STDOUT to a Custom Function in C  ?

Redirection de STDOUT vers un gestionnaire personnalisé

Dans les applications où vous souhaitez adapter la sortie généralement dirigée vers le flux stdout, vous pouvez chercher des moyens pour le rediriger ailleurs. S'il est bien connu que vous pouvez rediriger stdio vers un fichier, pourquoi ne pas envisager de le rediriger vers une fonction de votre propre définition ?

Comprendre la sortie standard de C

Tout d'abord, il est crucial de comprendre que stdout, avec stderr et stdin, représente un flux de sortie prédéfini pour les données non formatées. La fonction printf, ainsi que C iostream, utilisent stdout pour afficher la sortie.

Réaliser une redirection via ostringstream

La redirection vers une fonction personnalisée est en effet réalisable. Pour les flux cout, cerr et clog, vous pouvez y parvenir à l'aide de ostringstream sans avoir besoin d'implémenter votre propre streambuf. Voici un exemple d'extrait de code :

<code class="cpp">// Redirect cout.
streambuf* oldCoutStreamBuf = cout.rdbuf();
ostringstream strCout;
cout.rdbuf( strCout.rdbuf() );

// Output goes to the string stream.
cout << "Hello, World!" << endl;

// Restore original cout.
cout.rdbuf( oldCoutStreamBuf );

// Retrieve content from the string stream.
cout << strCout.str();</code>
Copier après la connexion

Mises en garde et méthodes alternatives

Bien que cette méthode puisse rediriger la sortie de cout, cerr et clog, elle peut ne pas fonctionner de manière transparente pour stdout et stderr. printf, par exemple, n'affichera pas la fonction personnalisée.

Pour les données de plus petite taille, l'utilisation de freopen ou setbuf est une option viable. Cependant, pour des quantités de données plus importantes, il est recommandé d'utiliser le mécanisme sophistiqué dup ou dup2, qui implique une redirection vers un tube.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!