c++ - 问题 C++ 中的 std::cout 流究竟是如何工作的?
问题描述
假设我们有:
std::cout << "Something";
这到底是如何工作的?我只是想确保我很好地理解了这一点,并且根据我一直在阅读的内容,可以说基本上插入运算符将字符串文字"Something"
插入标准输出流吗?
但在那之后会发生什么?标准输出流在哪里?谁能解释一下?
这基本上是我唯一没有得到的部分:我"Something"
在标准输出流中有字符串文字,但是流在哪里?
解决方案
不同操作系统之间的技术细节有所不同,但基础是相同的:
每个程序通常有 3 个标准流:out ( cout
)、in ( cin
) 和 err ( cerr
)(与 out 相同,但用于错误)。这些溪流本身就什么都不是。它们的存在是为了供第三方使用。该第三方可以是例如终端。当您从终端执行程序时,它会附加到程序流并在终端中显示它们的输出/请求它们的输入。
如果你想做同样的事情,你可以自己从你的程序中执行一个命令,然后取出 out/in/err 流来读取或写入它们。您在这里有一个示例:如何使用 POSIX 在 C++ 中执行命令并获取命令的输出?
编辑:在谈论 C++ 时,请记住这cout << "anything"
只是 function 的语法糖cout.operator<<("anything")
。并且该功能“简单地”写入流
推荐阅读
- sql - 在连接两个表期间获取最大总和
- ios - Apple SSD 的 Used Memory 在运行 Xcode 项目时不断增加
- ios - 为什么设置 UIBarButtonItem 的 primaryAction 属性会更改其图像?
- php - 无法在 php 联系表单代码中显示错误或成功消息
- python - 打开 Cv 将珠宝图像添加到捕获的面部问题
- angular - 我的 angular11 http PUT 方法有问题。除 PUT 外,所有其他都以角度工作。他们都在 Postman 工作
- google-app-engine - 部署到亚洲地区时如何防止 App Engine 构建超时
- entity-framework - 实体框架 - 添加具有相关实体的实体时出错
- python - 您如何修复“缺少模块 docstringpylint(缺少模块文档字符串)”
- javascript - 反应上下文 api 中的问题