PS:下面是我个人对两种I/O库的理解
C语言的输入输出:需要标准流和输入输出函数共同实现,这是个过程
C++的输入输出:实例化ios类为对象,这是面向对象
最近看的两个项目,一个是C,一个是C++,突然发现真的有很多不同
C语言—标准I/O
C语言的I/O相关函数封装在头文件 \<stdio.h>
1. 三个标准流
PS:我对流的理解,是数据源源不断的流动,标准应该是指某种规则
标准输入流 stdin:从键盘输入
标准输出流 stdout:默认是输出到屏幕
stdout 是行缓冲的,输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕
标准错误流 stderr:默认是输出到屏幕
stderr 是无缓冲的,会直接输出
1 | int main(){ |
2. 格式化输入、输出
(1)格式化输入
- scanf:从控制台输入
- fscanf :从文件输入
- sscanf :从指定字符串输入
(2)格式化输出
- printf:向屏幕这样的标准输出设备输出
- sprintf:格式化输出到一个字符串
- fprintf:格式化输出到流 stream指定的文件
3. 标准流和格式化输入输出函数的关系
PS:段小洋说不能单独讲流或输入输出,应该就是输入输出流,两者是绑定的,但是我就是想把它分开来,这样好理解嘛 ~
C语言把所有的设备(比如显示器、键鼠、U盘等)都当做文件,把所有的东西都当作文件来处理
程序与文件交互时,会默认创建 stdin、stdout、stderr 三个文件
比如,stdin先接收键盘的数据,然后通过输入函数将数据输入到程序里
C++—标准I/O
https://www.cnblogs.com/xumengpiaoyun/archive/2013/04/21/3034195.html
- 标准I/O:对系统指定的标准设备的输入和输出(键盘输入数据,输出到显示屏幕)
- 文件I/O:外存磁盘文件为对象进行输入和输出(从磁盘文件输入数据,数据输出到磁盘文件)
- 字符串I/O:对内存中指定的空间进行输入和输出
1. I/O类库中的常用流类
2.头文件
iostream类库的即可分别由不同的头文件来实现,命名空间为 std
- iostream:标准I/O,对系统指定的标准设备的输入和输出(比如键盘输入数据,输出到显示屏幕)
- fstream:文件I/O,以磁盘文件为对象的输入和输出(从磁盘文件输入数据,数据输出到磁盘文件)
- strstream:字符串I/O,对内存中指定的空间的输入和输出
PS:标准输入输出流、格式化输入输出都是对流类实例化为对象
3. 标准输入流
- cin流对象:从输入流提取数据,遇到空格或者回车就终止。
- cin.get()
cin.getline()
4. 标准输出流
- cout 流对象:可以传送到显示器输出,也可以重定向到磁盘文件
- cerr 流对象:只能在显示器输出,不经过缓冲区
- clog 流对象:在显示器显示错误信息,缓冲区满 后或者遇 endl 时向显示器输出
5. 格式化输入输出
1 |
|