【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]
温馨提示:这篇文章已超过393天没有更新,请注意相关的内容是否还可用!
阅读导航
- 引言
- 一、C语言的输入与输出
- 二、流是什么
- 三、C++IO流
- 1. C++标准IO流
- (1)istream
- (2)ostream
- (3)iostream
- (4)cin 和 cout
- 2. C++文件IO流
- (1)ifstream
- (2)ofstream
- (3)fstream
- 四、stringstream的简单介绍
- 温馨提示
引言
C++中的IO流(输入输出流)是程序与外部环境之间进行数据交互的重要手段。通过IO流,程序可以从外部读取数据或将数据输出到外部,实现了程序与用户、其他程序和设备之间的数据传输。C++标准库提供了丰富的IO流类和函数,通过这些类和函数,开发者能够方便地实现各种类型的IO操作。本文将介绍IO流的基本概念和相关类,讲解如何在C++程序中使用IO流实现输入输出操作,并给出相应的示例代码以说明其用法。同时,还将介绍一些常见的IO流操作技巧和使用注意事项,帮助读者更好地掌握和应用C++中的IO流机制。通过学习本文,读者将能够深入理解C++中的IO流,掌握IO流的使用方法,提高程序的输入输出效率和稳定性。
一、C语言的输入与输出
C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。
- scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。
- printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。
🚨🚨注意宽度输出和精度输出控制
C语言借助了相应的缓冲区来进行输入与输出。如下图所示:
⭕对输入输出缓冲区的理解:
- 可以屏蔽掉低级I/O的实现,低级I/O的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,可以很容易写出可移植的程序。
- 可以使用这部分的内容实现“行”读取的行为,对于计算机而言是没有“行”这个概念,有了这部分,就可以定义“行”的概念,然后解析缓冲区的内容,返回一个“行”。
二、流是什么
“流”即是流动的意思,是物质从一处向另一处流动的过程,是对一种有序连续且具有方向性的数据( 其单位可以是bit,byte,packet )的抽象描述。
C++中的流是一种抽象描述,用于表示数据从一个地方(输入设备)流向另一个地方(输出设备)的过程。它描述了数据以有序连续和具有方向性的方式流动的特性。在C++中,流被比喻为信息从外部输入设备(如键盘)向计算机内部(如内存)输入,或者从内存向外部输出设备(如显示器)输出的过程。为了实现这种流动,C++提供了I/O标准类库,其中的每个类都被称为流或流类,用于完成不同方面的输入输出功能。通过使用这些流类,我们可以实现数据的输入和输出操作,实现与外部环境的交互。
🔴C++提供的I/O标准类库
三、C++IO流
C++系统实现了一个庞大的类库,其中ios为基类,其他类都是直接或间接派生自ios类
1. C++标准IO流
C++标准库提供了4个全局流对象cin、cout、cerr、clog,使用cout进行标准输出,即数据从内存流向控制台(显示器)。使用cin进行标准输入即数据通过键盘输入到程序中,同时C++标准库还提供了cerr用来进行标准错误的输出,以及clog进行日志的输出,从上图可以看出,cout、cerr、clog是ostream类的三个不同的对象,因此这三个对象现在基本没有区别,只是应用场景不同。
(1)istream
istream 是输入流的基类,它提供了从外部读取数据的功能。常用的 istream 类有 istream, ifstream(从文件读取)和 istringstream(从字符串读取)。
⭕常用的 istream 函数包括:
- get():从流中获取下一个字符并返回其 ASCII 值。
- getline():从流中读取一行文本,并将其存储在指定的字符串变量中。
- operator>>:从流中读取数据并将其存储在指定的变量中。
例如:
int num; std::cin >> num; // 从标准输入设备读取一个整数
(2)ostream
ostream 是输出流的基类,它提供了向外部写入数据的功能。常用的 ostream 类有 ostream, ofstream(写入到文件)和 ostringstream(写入到字符串)。
⭕常用的 ostream 函数包括:
- put():向流中写入一个字符。
- write():向流中写入指定长度的数据。
- operator std::ifstream file("example.txt"); if (file.is_open()) { int num; while (file num) { std::cout std::cerr std::ofstream file("example.txt"); if (file.is_open()) { file std::cerr std::fstream file("example.txt", std::ios::in | std::ios::out); if (file.is_open()) { int num; while (file num) { std::cout std::cerr

![【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]](https://img-blog.csdnimg.cn/direct/32ed20b44d704746a77da19b16d060e5.jpeg)
![【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]](https://img-blog.csdnimg.cn/direct/26fb38cfbbce400cbb195465ad96381b.png)
![【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]](https://img-blog.csdnimg.cn/direct/74a56f2f512c470ea452fbbeb9fe6624.png)
![【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]](https://img-blog.csdnimg.cn/direct/588f3ca6b0084cdab66d0300a3b386f6.png)
![【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]](https://img-blog.csdnimg.cn/direct/686178f7f6ea4d23a2e3953d816d3215.png)