c++ IO類,檔案操作

weixin_32208747發表於2018-06-05

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;

相關文章