2014-02-28 103 views
0

是否有替代方案使用類似cin.ignore(10000, '\n')的東西? 例如,我要求輸入名字,用戶開始在一行中輸入他的100頁生活故事而不輸入。沒有辦法確切知道用​​戶會持續多久,C++中是否有捕獲所有用戶輸入直到下一個提示?我已經四處搜尋,所有的建議都表示要在cin.ignore的論點中拋出一個任意大的數字。cin.ignore替代方案,清除緩衝區中的所有內容

是否有代碼的可靠方式:

while cin.get(variable, #, delimiter) is in a fail state; 
{ 
    use cin.ignore() until there is nothing left in the buffer; 
} 

cin.clear() 

謝謝!

回答

0

只要指定的最大流大小

std::numeric_limits<std::streamsize>::max() 

因爲它是一個無符號的類型,你可以犧牲顯性爲了簡潔,只是說-1

+0

-1在哪裏起作用?我試過std :: cin.ignore(std :: numeric_limits :: max(),'\ n');並且它在這種情況下具有預期的效果。 – user3363001

+0

@ user3363001:當轉換爲無符號類型時,「-1」成爲該類型的最大值(因爲轉換是通過模運算完成的)。所以,如果你不想寫更長的'numeric_limits'表達式,你可以寫出來。 –