我正在浏览有关C ++ I / O库的信息的cppreference并且到目前为止都了解它,但是有一件事情:例如,据说std::cout是
与标准C输出流标准输出相关联。
这在技术上意味着什么? std :: cout实际上是使用stdout还是仅仅意味着std :: cout在功能上等同于stdout?
如果全局对象正在使用C流 - 为什么他们会使用C流而不是C ++ I / O库提供的流?
答案 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 ++ 流做的是在操作系统提供的原始基元上添加抽象层。这通常是在数字和字符串,字符编码等之间进行格式化和转换。C
和C
做的事情有所不同。