首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 基礎

C++ get() 三種形態全解析:單字元讀取的精準控制

     編輯:C++ 基礎

三種呼叫形式

  1. 無參數:int c = cin.get();
    回傳讀取字元 ASCII (int 型別),EOF 回傳 EOF (-1)。適用逐字元複製、過濾。
  2. 單參數:cin.get(ch);
    讀一字元存入 ch,成功回傳 true,失敗/EOF 回傳 false。適合迴圈條件。
  3. 三參數:cin.get(buf, n, delim);
    讀最多 n-1 字元到陣列,遇 delim 提前結束 (不存入、指標停留在上)。成功回傳 true。

範例 1:無參數版——回聲程式

int c;
while ((c = cin.get()) != EOF)
    cout.put(c); // 輸出單字元
// 輸入: I study C++ → 輸出: I study C++

範例 2:單參數版——更簡潔的迴圈

char c;
while (cin.get(c)) // 自動轉 bool
    cout.put(c);
cout << "end";

範例 3:三參數版——固定寬度欄位讀取

char ch[20];
cin.get(ch, 10, '\n'); // 最多讀 9 字元或遇換行
cout << ch << endl;
// 輸入: I study C++ very hard. → 輸出: I study

注意:n=10 實讀 9 字元 + '\0'。若輸入 abcde\n,實讀 5 字元 + '\0'。

參數省略預設值

cin.get(ch, 10, '\n'); // 等價
cin.get(ch, 10);       // 預設 delim = '\n'

也可自訂分隔符:cin.get(ch, 10, 'x'); 遇 'x' 停止。

C 語言遺產:getchar()

// 等價於 cin.get()
int c = getchar();      // 需 #include  或 
putchar(c);             // 等價於 cout.put(c)

適用物件

所有 istream 衍生類:cin、ifstream、istrstream 等。

總結

get() 三形態覆蓋「單字元無緩衝讀取」、「布林迴圈控制」、「固定寬度欄位讀取」三大高頻場景。掌握 n-1 實讀邏輯與分隔符指標行為,能精準控制字元級輸入流。

  1. 上一篇文章:
  2. 下一篇文章:
  • --热点文章
  • Copyright © 程式碼之家 All Rights Reserved