int c = cin.get();EOF (-1)。適用逐字元複製、過濾。cin.get(ch);ch,成功回傳 true,失敗/EOF 回傳 false。適合迴圈條件。cin.get(buf, n, delim);n-1 字元到陣列,遇 delim 提前結束 (不存入、指標停留在上)。成功回傳 true。int c;
while ((c = cin.get()) != EOF)
cout.put(c); // 輸出單字元
// 輸入: I study C++ → 輸出: I study C++
char c;
while (cin.get(c)) // 自動轉 bool
cout.put(c);
cout << "end";
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' 停止。
// 等價於 cin.get() int c = getchar(); // 需 #include或 putchar(c); // 等價於 cout.put(c)
所有 istream 衍生類:cin、ifstream、istrstream 等。
get() 三形態覆蓋「單字元無緩衝讀取」、「布林迴圈控制」、「固定寬度欄位讀取」三大高頻場景。掌握 n-1 實讀邏輯與分隔符指標行為,能精準控制字元級輸入流。