问题std::cout在c++中是如何工作的?



假设我们有:

std::cout << "Something";

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

但是之后会发生什么呢?标准输出流通向哪里?有人能解释一下吗?

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

不同操作系统的技术细节不同,但基本原理是相同的:

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

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

编辑:当谈论c++时,请记住cout << "anything"只是函数cout.operator<<("anything")的语法糖。这个函数很简单写入流

所以,'std'是存储在标准库中找到的所有内容的命名空间,所以基本上你说"嘿,c++,去'std'存储,找到cout命令并运行它"至少我知道std是这样的。当你说使用命名空间std;您告诉编译器"获取STD名称空间中的所有内容并将其转储到全局名称空间中"。我希望它能帮助你理解。

最新更新