首页 > 解决方案 > 问题 C++ 中的 std::cout 流究竟是如何工作的?

问题描述

假设我们有:

std::cout << "Something";

这到底是如何工作的?我只是想确保我很好地理解了这一点,并且根据我一直在阅读的内容,可以说基本上插入运算符将字符串文字"Something"插入标准输出流吗?

但在那之后会发生什么?标准输出流在哪里?谁能解释一下?

这基本上是我唯一没有得到的部分:我"Something"在标准输出流中有字符串文字,但是流在哪里?

标签: c++

解决方案


不同操作系统之间的技术细节有所不同,但基础是相同的:

每个程序通常有 3 个标准流:out ( cout)、in ( cin) 和 err ( cerr)(与 out 相同,但用于错误)。这些溪流本身就什么都不是。它们的存在是为了供第三方使用。该第三方可以是例如终端。当您从终端执行程序时,它会附加到程序流并在终端中显示它们的输出/请求它们的输入。

如果你想做同样的事情,你可以自己从你的程序中执行一个命令,然后取出 out/in/err 流来读取或写入它们。您在这里有一个示例:如何使用 POSIX 在 C++ 中执行命令并获取命令的输出?

编辑:在谈论 C++ 时,请记住这cout << "anything"只是 function 的语法糖cout.operator<<("anything")。并且该功能“简单地”写入流


推荐阅读