2014-02-28 44 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'表达式,你可以写出来。 –