C++中的I/O流

一、C语言的输入与输出

C语言中我们用到最频繁的输入输出方式就是scanf()和printf()。

scanf() :从标准的输入设备(键盘)读取数据到变量中。
printf() :将指定的数据输出到标准输出设备(屏幕)。

C语言借助了相应的缓冲区来进行输入与输出:

在这里插入图片描述
对缓冲区的理解:

1.可以屏蔽掉低级I/O的实现,低级I/O的实现依赖于操作系统本生内核的实现,所以如果能够屏蔽掉这部分的差异,可以很容易写出可移植的程序
2.可以使用这部分内容实现"行"读取的行为,对于计算机没有"行"这个概念,有了这部分,就可以定义"行"的概念,然后解析缓冲区的内容,返回一个"行"。

二、c++的I/O流

c++流是指信息从外部输入设备(键盘)向计算机内部(内存)输入和从内存向外部输入设备(显示器)输入的过程。这种输入方法被形象的成为“流”。

为了实现这个流动,c++定义了一个I/O标准库,其中ios为基类,其他类都是其直接或间接派生出的类。

在这里插入图片描述

1、io流

#include<iostream>
using namespace std;

cin 标准输入流对象,键盘为其对应的标准设备;
cout 标准输出流对象,显示器为标准设备;
cerr 标准错误输出流对象,显示器为标准设备(不经过缓冲区,防止程序栈调用完);
clog 标准错误输出流对象,显示器为标准设备(经过缓冲区)。

2、file流

#include<fstream>
using namespace std;

ifstream 向文件中输入数据的类
fstream 给文件中输入输出数据的类
ofstream 从文件中输出数据的类
filebuf 文件缓冲区类

char str[20];
ofstream ofs("a.txt");//以输入方式打开文件,文件不存在时,创建一个新的文件
ofs << "hello world";//向文件输入数据
ofs.close();//关闭文件,文件处理完毕后,一定要关闭文件,否则可能会导致文件内数据的丢失
ifstream ifs("a.txt");//以输出方式打开文件
ifs >> str;//把文件的内容输出到一个指定的存储空间里
cout << str;
ifs.close();//关闭文件

ifstream和ofstream再不做重点说明,因为fstream继承了ifstream和ofstream,通常使用fstream类处理文件。
fstream的使用

3、string流

#include<sstream>
using namespace std;

string 流和file流的使用大致相同

istringstream 向string对象中输入数据的类
stringstream 给string对象中输入输出数据的类
ostringstream 从string对象中输出数据的类
stringbuf string缓冲区类

1、ostringstream

构造函数
explicit ostringstream ( openmode which = ios_base::out );
explicit ostringstream ( const string & str, openmode which = ios_base::out )
成员函数
string str(const string & str)

若构造函数为传参为空,则操作缓冲区(缓冲区自动扩容),否则操作传入的string对象

ostringstream oss;
oss << "hello world";
cout << oss.str() << endl;
oss.getline()

2、istringstream

构造函数
explicit istringstream ( openmode which = ios_base::out );
explicit istringstream ( const string & str, openmode which = ios_base::out )
成员函数
string str(const string&)

若构造函数为传参为空,则操作缓冲区(缓冲区自动扩容),否则操作传入的string对象

string s;
istringstream iss("100");
iss >> s;
cout << s << endl;

istringstream和ostringstream再不做重点说明,因为sstream继承了istringstream和ostringstream,通常使用sstream类处理文件。
3 . stringstream的使用

发布了77 篇原创文章 · 获赞 16 · 访问量 6527

猜你喜欢

转载自blog.csdn.net/weixin_43886592/article/details/102700313
今日推荐