C++流类库、流的输入输出

C++流类库

流类库

c++语言中为不同类型数据的标准输入和输出定义了专门的类型,类库中主要有ios、istream、ostream、iostream、ifstream、ofstream、fstream、istrstream、ostrstream和strstream等类。

ios为根基类,它直接派生4个类,输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstreambase。
输入文件流类ifstream同时继承了输入流类和文件流基类。
输出文件流类ofstream同时继承了输出流类和文件流基类。
输入字符串流类istrstream同时继承了输入流类和字符串流基类。
输出字符串流类ostrstream同时继承了输出流类和字符串流基类。
输入/输出流类iostream同时继承了输入流类和输出流类。
输入/输出文件流类fstream同时继承了输入/输出流类和文件流基类。
输入/输出字符串流类strstream同时继承了输入/输出流类和字符串流基类。

类库关系图如图所示:

声明:
关于流类库的概念知识总结于清华大学出版社c++教材。
类库关系图是我自己用wps画的,因为教程书上的关系图错了,借用时注意版权问题

流类库的使用

c++系统中的I/O标准类,都定义在iostream.h、fstream.h和strstream.h这3个头文件中,各头文件包含的类如下:

进行标准I/O操作时使用iostream.h头文件,它包含ios、iostream、istream和ostream等类。
进行文件I/O操作时使用fstream.h头文件,它包含fstream、ifstream、ofstream和fstreambase等类。
进行字符串I/O操作时使用fstream.h头文件,它包含strstream、istrstream、ostrstream、strstreambase和iostream等类。

要进行什么样的操作,只需要引入头文件即可。
某些编译器可能识别不了这种头文件,比如dev c++,可以把后缀.h去掉。

流的输入输出

下面以流的输出做一个示范。
源代码:

#include<iostream>
#include<strstream>			//字符串流头文件
using namespace std;
int main(){
	
	char c[]="123456";		//定义字符串
	
	istrstream s1(c);		//定义字符串输入流s1,将字符串c注入s1
	cout<<s1<<endl;;		
	
	int i;	
	s1>>i;		//将s1流注入int型i,将字符串转换为整型数字
	cout<<i<<endl;
	
	istrstream s2(c,3);		//定义字符串输入流s2,将字符串c的前3位注入s1
	int j;
	s2>>j;		//将s2流注入int型j,将字符串转换为整型数字
	cout<<j<<endl;
	
	cout<<i+j<<endl;
	
	return 0;
} 

结果图:
strstream
需要注意的是,单纯地输出流对象是错误地,必须将流注入某个对象才可。

发布了28 篇原创文章 · 获赞 51 · 访问量 5771

猜你喜欢

转载自blog.csdn.net/zhaizhaizhaiaaa/article/details/104106572