【发布时间】:2015-12-22 07:00:21
【问题描述】:
目前我正在自学 C++。我对流和外部设备之间的关系感到很困惑。 cplusplus关于基本I/O的解释是
无需了解与流相关的媒体或其任何内部规范的详细信息。我们需要知道的是,流是字符的源/目标,并且这些字符是按顺序提供/接受的(即一个接一个)。
那么“流是字符的源/目标”是什么意思。 以监视器为例,字符的目的地不应该是监视器而不是流?或者我可以将监视器作为流?如果是,那么如何理解以下内容:
输出流对象可以写入字符序列并表示其他类型的数据。提供了特定的成员来执行这些输出操作(参见下面的函数)。 标准对象 cout、cerr 和 clog 就是这种类型的对象。
认为 cout、cerr 和 clog 是监视器的对象实在是太过分了…… 我宁愿将输出流作为与监视器不同的对象。
有人可以简单地向我解释一下 I/O 流和外部设备之间的真正联系是什么以及它是如何工作的吗?非常感谢!
【问题讨论】:
-
您正在寻找的连接依赖于实现,iostreams 应该是一个抽象。在 Linux 和其他 Unix 操作系统下:是的(是的,Linux 是一个 Unix 操作系统,是的,Linux 是一个操作系统,而不仅仅是一个内核),我已经看到连接到网络套接字的 iostream 变体(2003 年左右的 gcc 扩展)以及更多普通 I/O 通道作为终端和普通 UTF-8/8859-1 文本文件。