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

C++ 學習筆記:string 輸入與 getline 空白字符處理差異

     編輯:C++ 入門

C++ 學習筆記:string 輸入與 getline 空白字符處理差異

C++ 標準庫中 operator>> 與 getline 對空白字符的處理機制截然不同,是初學者常見陷阱。

operator>> (提取運算符)

  • 跳過前導空白字符(空格、換行、制表符等)
  • 讀取非空白字符,直到遇到下一個空白字符停止
  • 該終止空白字符留在輸入流中
  • 適用於讀取單詞、數值等無空格數據

getline 函數

  • 不跳過前導空白字符(包含換行符)
  • 讀取字符直到遇到換行符 '\n'停止
  • 換行符被讀取並丟棄(不存入 string,但從流中移除)
  • 適用於讀取整行文本、含空格字串

經典坑:混用導致「跳過輸入」

int n; string s;
cin >> n;        // 讀取數字,留下 '\n'
getline(cin, s); // 讀到 '\n' 立即返回空串!
// 解決:cin.ignore() 或 getline 前先吃掉換行

最佳實踐

  • 只用 operator>> 讀取格式化數據
  • 只用 getline 讀取整行,配合 stringstream 解析
  • 混用時,getline 前調用 cin.ignore(numeric_limits<streamsize>::max(), '\n') 清空行尾

理解流狀態與空白處理機制,是 C++ I/O 穩健編程的基礎。

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