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
需要注意的是,單純地輸出流對象是錯誤地,必須將流注入某個對象纔可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章