C++I/O小結

Tags:C++,《C++ Primer Plus》筆記


一、iostream##

頭文件 <iostream> 用于對控制臺進行輸入輸出。通常來講,對 iostream 的疑惑一般在于 cin 上,這里總結 cin 的用法。

cin >> name###

一般地,我們通過 cin >> <name> 來將一段輸入流復制到名為 name 的變量中,當然 name 變量必須已經提前聲明。

首先, cin 輸入的數據一開始都是字符類型,也就是 char 。但是, cin 的后續行為將視 name 的類型而定。

  • 如果是 char 類型,則 cin 讀取遇到的第一個字符,輸入到 name 中。
    cin只管往后讀取,因為輸入流默認就是字符流,所以讀取到一個字符就會結束。例如輸入 3.22 ,前面的空格會被自動跳過,讀到 3 時取到一個字符,讀取結束, .22 會被留在輸入流中,參與下一次讀取。
  • 如果是 int 類型,則 cin 讀取從第一個數字字符開始,到第一個非數字字符的中間部分,輸入到 name 中。
    char 一樣,第一個數字字符前面的內容跳過。例如輸入 13.22 ,讀取得到 13 。
  • 如果是 double 類型,則在 int 規則的基礎上,不跳過 . 即可。
  • 如果是 char[] 類型,則會將輸入流一直讀入,直到遇見空白字符(空格符、換行符等)。

</br>

cin.get(name)###

讀取下一個字符到name中,注意三點:

  • name 必須是 char 類型變量,沒有例外。
  • 不會跳過空字符。
  • 不指定 name 時,即 cin.get() 時,跳過輸出流中的下一個字符。

</br>

cin.get(name,Artsize),cin.getline(name,Artsize)###

兩者都可以讀取在同一行、長度為 Artsize 的一連串字符或整行字符,區別在于:

前者會在輸出流里留下一個換行符,而后者則連換行符一起讀取。

</br>

對于上述的幾種 cin 用法,都只有在用戶按了回車鍵后,輸入流才會被讀取。在很多編譯器里,這個回車也算一個換行符!。

</br>

cin文件尾條件###

逐個字符讀取時,通常我們需要判斷輸入流是否已到結尾。

cin.get() 在讀取下一個字符時發現沒有輸入,則會返回 EOF ,并將 cin.eofbitcin.failbit 設置為1,此時 cin 將關閉讀取的功能,直至人為調用 cin.clear() 為止。

而我們可以通過 cin.eof() 或者 cin.fail() 訪問 cin.eofbitcin.failbit ,若已被標記,則函數返回 true 。

下述代碼將計算輸入的字符數。

int ch;
while ((ch = cin.get()) != EOF){
    cout.put(char(ch));
    ++count;
}

</br>

cin檢錯經典代碼###

if(!cin){
    cin.clear();
    while(cin.get() != '\n') continue;
    cout << "Bad input;input process terminated.\n";
    break;
}

</br>

二、fstream##

頭文件 <fstream> 用于對文件進行輸入輸出,使用步驟如下:

  1. 包含頭文件 fstream 。
  2. ofstream 操作符或 ifstream 創建一個對象。
  3. 就像使用 coutcin 那樣使用創建的對象。
  4. 使用結束后,調用對象的 close() 成員函數。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 淺談C++常用輸入輸出 在編寫C++程序的時候,經常因為輸入輸出頭疼,所以在這里做一個小結,記錄一下常用的輸入輸出...
    MinoyJet閱讀 3,776評論 0 6
  • C/C++輸入輸出流總結 前兩天寫C++實習作業,突然發現I/O是那么的陌生,打了好長時間的文件都沒有打開,今天終...
    LuckTime閱讀 1,752評論 0 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,536評論 1 51
  • 《六項精進》打卡第三十天 日期:2017.10.24 姓名:黃曉明 單位:溫州市博奕成套設備工程有限公司 組別:...
    黃曉明_f18e閱讀 134評論 0 0
  • CoreData概述: Core data 是數據持久存儲的最佳方式Core Data 基于MVC模式下,為創建分...
    Icanbe閱讀 644評論 0 1