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