目录
什么是IO流
流(Stream) 是计算机编程中用来处理输入/输出(I/O)操作的一种抽象概念。在编程中,流可以被视为数据的连续序列,这些数据从数据源(如文件、内存缓冲区、网络套接字等)流向数据接收者(如另一个程序、设备或内存中的数据结构)。
IO流(Input/Output Streams)是标准库提供的一种用于处理输入和输出操作的机制。这些流封装了数据的读写过程,使得开发者可以更方便地处理文件、控制台、内存和网络中的数据。
C++中的IO流分为以下几种主要类型:
输入流(Input Streams):用于从数据源读取数据。例如,
std::istream
是所有输入流的基类,std::ifstream
(input file stream)用于从文件读取数据,std::cin
(character input)用于从标准输入(通常是键盘)读取数据。输出流(Output Streams):用于向数据目标写入数据。例如,
std::ostream
是所有输出流的基类,std::ofstream
(output file stream)用于向文件写入数据,std::cout
(character output)用于向标准输出(通常是屏幕)写入数据。文件流(File Streams):
std::ifstream
和std::ofstream
分别用于文件的输入和输出。字符串流(String Streams):
std::istringstream
和std::ostringstream
用于从字符串读取数据和向字符串写入数据。
标准IO流
标准I/O流(Standard Input/Output Streams)是指在计算机编程中预定义并广泛使用的输入/输出流,它们通常与程序的标准输入、标准输出和标准错误输出相关联。这些流提供了一种简便的方式来处理程序与外部世界的交互。
标准输入istream
- 通常用于从键盘或其他输入设备读取数据。
int a;
cin>>a
这段代码我们通过istream对象cin通过>>流提取从键盘上读取字符,并转成int类型,和C语言中的scanf函数具有相同的功能。
// 实现循环流提取
while (cin >> s1)
{
cout << s1 << endl;
}
另外流提取可以和while循环结合,实现循环流提取
而当我们需要退出时,可以通过 ctrl Z + 回车键 退出当前的循环读取,进行后续的代码块
我们可能会疑惑,cin是一个自定义类型istream的对象,为什么可以用作while中的bool判断呢?
这是因为:istream中实现了operator bool重载!接下来我们用一个场景来体会一下
// Bulid为内置类型 Custom为自定义类型
class BuildToCustom
{
public:
BuildToCustom(){}
BuildToCustom(int i)
{}
};
class CustomToCustom
{
public:
CustomToCustom(){}
CustomT