全局C ++ I / O对象是等效的还是使用C I / O流?

时间:2018-04-21 22:11:56

标签: c++

我正在浏览有关C ++ I / O库的信息的cppreference并且到目前为止都了解它,但是有一件事情:例如,据说std::cout

  

与标准C输出流标准输出相关联。

这在技术上意味着什么? std :: cout实际上是使用stdout还是仅仅意味着std :: cout在功能上等同于stdout?

如果全局对象正在使用C流 - 为什么他们会使用C流而不是C ++ I / O库提供的流?

1 个答案:

答案 0 :(得分:2)

当你说" C"这些实际上是操作系统提供给每个进程标准流

创建进程时,操作系统会创建几个低级"文件描述符"启用输入输出

如何实现这些基础标准输入/输出流以及操作系统的语言。它们已经存在于操作系统中,因为之前编写了C语言。

显然&#34; C&#34;通过<stdio.h>C++提供访问权限,通过<iostream>提供访问权限。

我认为要说C++库使用&#34; C&#34;流可能有点误导。如果我们讨论的是标准C库,则C++不太可能使用这些(但需要与他们合作)。

基础标准输入/输出流不是标准C 的一部分,但它们使用C语言的历史很长,因为{{1是专为编写操作系统而创建的,因此 Process I / O 的低级核心很可能是C库(尽管它也可能是汇编程序或其他语言)

例如,在C系统上,有POSIX个库标题用于访问不属于标准C的低级标准输入/输出流 。这可能就是为什么它们在链接文档中被称为C流,但标准io流的概念早于C语言本身。

标准C 和标准C ++ 流做的是在操作系统提供的原始基元上添加抽象层。这通常是在数字和字符串,字符编码等之间进行格式化和转换。CC做的事情有所不同。