2 回答

TA貢獻1812條經驗 獲得超5個贊
1.如果在delimeter參數聲明為回車,則遇到回車時會停,或者在讀到最大長度時會停止
2.若第一個字符就是回車,則字符串為空.可以
cin.get()跳過第一個回車符
3,20是指跳過多少個字符,
cin.ignore(20,'\n')作用是指跳過20個字符或者遇到回車時停止(此時可能跳過字符少于20個)

TA貢獻1805條經驗 獲得超9個贊
我們可以對get(str,Size),與getline(str,Size)的區別做一個總結:
分為三種情況來看:
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來說空行是合法的輸入,且不會影響下面的輸入處理。
cin.ignore(20,'\n')作用是指跳過20個字符或者遇到回車時停止
對于這3個函數,默認的結束字符都是回車。
- 2 回答
- 0 關注
- 338 瀏覽
添加回答
舉報