首页 > 后端开发 > C++ > 如何将 STDOUT 重定向到 C 中的自定义函数?

如何将 STDOUT 重定向到 C 中的自定义函数?

Susan Sarandon
发布: 2024-11-01 01:02:03
原创
1024 人浏览过

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

在 C 中重定向 STDOUT

在编程中通常需要重新设计输出流以满足特定的应用程序要求。本文解决了将 STDOUT 的输出重定向到自定义函数的查询,深入研究了所涉及的底层机制并提供了实用的解决方案。

重定向技术

尽管将 STDOUT 重定向到文件的常识,重定向到函数的概念同样可行。该技术利用指定函数 MyHandler 来接收和处理本来会发送到 STDOUT 的数据。

实现

实现围绕重定向 cout 和 cerr 流到字符串流 (ostringstream)。这是一个简化的示例:

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

// Custom function
void MyHandler(const char* data) {}

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

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

// Display the collected output from the string stream
cout << strCout.str();</code>
登录后复制

不幸的是,此方法仅重定向专门用于 cout 的数据,而不是发送到 STDOUT 的整个输出。例如,printf 输出不会被重定向。

其他选项

要实现更全面的输出重定向,请考虑使用 freopen、setbuf 或 dup 和 dup2 等技术系统调用。请注意,虽然这些方法允许重定向 STDOUT 输出,但它们有一定的限制,可能并不适合所有场景。

以上是如何将 STDOUT 重定向到 C 中的自定义函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板