c++ io類主要分三種
博文參考:
輸入:從裝置(檔案)-->緩衝區-->記憶體
輸出:記憶體-->緩衝區-->裝置(檔案)
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
該函式有三種格式:無參,一引數,二引數
即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;
C IO流檔案操作
我們知道,程式中的資料通常儲存在記憶體中,當程式關閉時其對應的記憶體空間就會被釋放掉,也就是說我們在程式中所作的操作或對資料的更改會在程式結束時自動刪除,沒辦法永久的儲存,如果你想永久的儲存這些資料,則可以考慮使用資料庫或檔案對這些資料在磁碟上進行儲存,資料庫適合儲存比較龐大的資料量當資料比較簡單時...
C IO操作總結
c 語言本身並不提供輸入輸出的功能,輸入輸出功能由io庫提供,io庫屬於c 標準庫的乙個子集,需要掌握的知識點並不是很多,所以也並不是很難掌握,這裡只是個人學習的一點總結,方便以後隨時複習一下,免得忘記。c 中io操作主要的流操作物件有三個,控制台輸入輸出流 檔案輸入輸出流 還有記憶體輸入輸出流,下...
檔案操作類
把乙個資料夾下所有檔案複製到另乙個資料夾下 當前資料夾 copy到新檔案 public static void copydirectory string srcpath,string destpath copydirectory i.fullname,destpath i.name 遞迴呼叫複製子資...