程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-C++中get與getline的區別?

c++-C++中get與getline的區別?

編輯:編程綜合問答
C++中get與getline的區別?

兩者cin.get和cin.getlie有什麼區別,什麼時候用哪一個比較好

最佳回答:


分為三種情況來看:
1)輸入的字符串不超過限定大小
get(str,Size):讀取所有字符,遇到'\n'時止,並且將'\n'留在輸入緩沖區中,其將被下一個讀取輸入的操作捕獲,影響該輸入處理;
getline(str,Size):讀取所有字符,遇到'\n'時止,並且將'\n'直接從輸入緩沖區中刪除掉,不會影響下面的輸入處理。

2)輸入的字符數超出限定的大小
get(str,Size):讀取Size-1個字符,並將str[Size-1]置為'\0',然後將剩余字符(包括'\n')留在輸入緩沖區中,這些字符將被下一個讀取輸入的操作捕獲,影響該輸入處理;
getline(str,Size):讀取Size-1個字符,並將str[Size-1]置為'\0',剩余字符(包括'\n')留在輸入緩沖區中,隨即設置cin實效位(即if(!cin)的判斷為真),關閉輸入。其後的所有輸入都無法得到任何東西,當然也無法得到輸入緩沖區中剩余的字符串。但如果象本例一樣用clear()重置cin,其後的輸入便可用並會得到遺留在輸入緩沖區中的字符。

3)輸入一個空行(即直接回車)
get(str,Size):str將得到'\0',並設置cin實效位,關閉輸入,但回車依然留在輸入緩沖區中,因此如果我們用clear()重置cin,其下一個讀取輸入的操作將捕獲'\n';
getline(str,Size):str將得到'\0',並將'\n'刪除掉,不置實效位,不關閉輸入。所以對於cin.getline來說空行是合法的輸入,且不會影響下面的輸入處理。
雖說是復制的,但是基本的講解的還算是清楚

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved