一、IO、流
資料的輸入和輸出(input/output簡寫為I/O)
對标準輸入裝置和标準輸出裝置的輸入輸出簡稱為标準I/O
對在外存磁盤上檔案的輸入輸出簡稱為檔案I/O
對記憶體中指定的字元串存儲空間的輸入輸出簡稱為串I/O
資料輸入輸出的過程,可以形象地看成流
從流中擷取資料的操作稱為“提取”(輸入)操作
向流中添加資料的操作稱為“插入”(輸出)操作
标準輸入輸出流
檔案流
字元串流
二、流類庫繼承體系、四個輸入輸出對象
流庫具有兩個平行的基類:streambuf 和 ios 類,所有流類均以兩者之一作為基類
streambuf 類提供對緩沖區的低級操作:設定緩沖區、對緩沖區指針操作區存/取字元
ios_base、ios 類記錄流狀态,支援對streambuf 的緩沖區輸入/輸出的格式化或非格式化轉換
stringbuf:使用串儲存字元序列。擴充 streambuf 在緩沖區提取和插入的管理
filebuf:使用檔案儲存字元序列。包括打開檔案;讀/寫、查找字元
如下圖:

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的功能
(一)、分割單詞
(二)、字元串與double 類型互相轉換
(三)、實作類似sscanf, sprinft 的功能
輸出為192.168.0.100
參考:
C++ primer 第四版
Effective C++ 3rd
C++程式設計規範