c++ IO類主要分三種
博文參考:http://www.cnblogs.com/yxnchinahlj/archive/2011/02/12/1952546.html
輸入:從裝置(檔案)-->緩衝區-->記憶體
輸出:記憶體-->緩衝區-->裝置(檔案)
1、對應標準輸入輸出(控制檯) istream、ostream、iostream 標頭檔案include<iostream>
2、對應檔案輸入輸出 ifstream、ofstream、fstream 標頭檔案 include<fstream>
3、對應字串輸入輸出 istringstream、ostringstream、stringstream 標頭檔案 include<sstream>
istream、ostream、osstream 類
1、典型物件 cin
(1)、cin >> 操作符是根據後面變數的型別讀取資料。
輸入結束條件:遇到Enter、Space、Tab鍵。
對結束符的處理 :丟棄緩衝區中使得輸入結束的結束符(Enter、Space、Tab)
a、讀字元時,輸入多個字元則只讀取一個字元。其他字元繼續留在緩衝區。
char a,b;
cin >> a;
cin >> b;
輸入 qewr回車 //a<--q,b<--e
如果型別不匹配則cin出錯。如cin >> intVal,輸入'a',則cin出錯
int i;
cin >> i;
輸入:a 回車 //流出錯
b、讀字串時,必須保證儲存的空間足夠,否則出錯
char c1[5];
char c2[5];
cin >> c1;
cin >> c2;
輸入 abcde回車//出錯 只能接收5-1 = 4個字元,並在末尾自動新增空字元。c1[4] == 0
(2)、cin.get()
該函式有三種格式:無參,一引數,二引數
即cin.get(), cin.get(char ch), cin.get(array_name, Arsize)
讀取字元的情況:
輸入結束條件:Enter鍵
對結束符處理:讀字元時不丟棄緩衝區中的Enter,讀字串時丟棄最後的Enter字元
cin.get() 與 cin.get(char ch)用於讀取字元,他們的使用是相似的,
即:ch=cin.get() 與 cin.get(ch)是等價的。
讀取字串的情況:
cin.get(array_name, Arsize)是用來讀取字串的,可以接受空格字元,遇到Enter結束輸入,按照長度(Arsize)讀取字元, 讀取Arsize-1個字元。會丟棄最後的Enter字元。
char c1[5]
cin >> c1;
輸入: 123456回車 //c1中[1][2][3][4][(空字元)];
(3).cin.getline()
cin.getline() 與 cin.get(array_name, Arsize)的讀取方式差不多,以Enter結束,可以接受空格字元。按照長度(Arsize)讀取字元, 會丟棄最後的Enter字元。
但是這兩個函式是有區別的:
cin.get(array_name, Arsize)當輸入的字串超長時,不會引起cin函式的錯誤,後面的cin操作會繼續執行,只是直接從緩衝區中取資料。但是cin.getline()當輸入超長時,會引起cin函式的錯誤,後面的cin操作將不再執行。
(4)、in.peek(); 返回的是當前檔案指標下一個位置的字元。
(5)、in.tellg();獲取當前檔案指標位置,字元從0開始。
例:有檔案config.txt,內容為ab
ifstream in("config.txt",ios::in);
in.seekg(0,ios::end);
in.tellg(); // 值為2
in.seekg(0, ios::beg);
in.tellg(); //值為0
(6)、in.seekg() 設定檔案指標讀的位置,要讀取檔案中最後 一個字元,則程式碼應為
in.seekg(-1, ios::end);
in >> ch;