天天看點

從零開始學C++之IO流類庫(一):流類庫繼承體系(IO流,檔案流,串流)和 字元串流的基本操作

一、IO、流

資料的輸入和輸出(input/output簡寫為I/O)

對标準輸入裝置和标準輸出裝置的輸入輸出簡稱為标準I/O

對在外存磁盤上檔案的輸入輸出簡稱為檔案I/O

對記憶體中指定的字元串存儲空間的輸入輸出簡稱為串I/O

資料輸入輸出的過程,可以形象地看成流

從流中擷取資料的操作稱為“提取”(輸入)操作

向流中添加資料的操作稱為“插入”(輸出)操作

标準輸入輸出流

檔案流

字元串流

二、流類庫繼承體系、四個輸入輸出對象

流庫具有兩個平行的基類:streambuf 和 ios 類,所有流類均以兩者之一作為基類

streambuf 類提供對緩沖區的低級操作:設定緩沖區、對緩沖區指針操作區存/取字元

ios_base、ios 類記錄流狀态,支援對streambuf 的緩沖區輸入/輸出的格式化或非格式化轉換

stringbuf:使用串儲存字元序列。擴充 streambuf 在緩沖區提取和插入的管理

filebuf:使用檔案儲存字元序列。包括打開檔案;讀/寫、查找字元

如下圖:

從零開始學C++之IO流類庫(一):流類庫繼承體系(IO流,檔案流,串流)和 字元串流的基本操作

C++為使用者進行标準I/O操作定義了四個類對象: cin,cout,cerr和clog

cin為istream流類的對象,代表标準輸入裝置鍵盤,後三個為ostream流類的對象

cout代表标準輸出裝置顯示器

cerr和clog含義相同,均代表錯誤資訊輸出裝置顯示器

三、ostream流 的操作,istream 流的操作

(一)、ostream流 的操作:

1、operator <<

<<操作傳回一個ostream對象的引用,是以可以連續使用

2、put( )

輸出單個字元

傳回一個ostream對象的引用

cout.put(‘H’).put(‘i’);

3、write( )

write(buf, len)

write( )傳回一個ostream對象的引用

cout.write (buf, len)  //char buf[len]

(二)、istream流 的操作:

1、opeartor>>操作

2、get( )

get( )操作:

讀取單個字元

傳回一個整數

字元的ASCII碼

get(char&)操作:

傳回一個istream對象的引用

3、getline( )

讀取一行

遇到Enter鍵

傳回istream對象的引用

getline()操作與>>的差別:  

char string1 [256],

cin.getline(string1, 256);     //get a whole line, 以'\0'結尾

cin >> string1;    //stop at the 1st blank space

4、read( )

read(buf, len)

對空白字元(包括'\n')照讀不誤

5、peek( ) 與 putpack()

peek:檢視而不讀取

putback:将一個字元添加到流

二、字元串流的基本操作

istringstream,由istream派生而來,提供讀string的功能

ostringstream,由ostream派生而來,提供寫string的功能

stringstream,由iostream派生而來,提供讀寫string的功能

(一)、分割單詞

從零開始學C++之IO流類庫(一):流類庫繼承體系(IO流,檔案流,串流)和 字元串流的基本操作

(二)、字元串與double 類型互相轉換

(三)、實作類似sscanf, sprinft 的功能

輸出為192.168.0.100

參考:

C++ primer 第四版

Effective C++ 3rd

C++程式設計規範