cin.ignore替代方案,在缓冲区中清除所有内容

时间:2014-02-28 01:41:25

标签: c++

是否有使用cin.ignore(10000, '\n')之类的替代方案? 例如,我要求一个名字,用户开始在一行上输入他的100页生活故事,而不是输入。没有办法确切地知道用户将继续使用多长时间,C ++中是否有一个捕获所有用户输入直到下一个提示?我一直在搜索,所有的建议都说在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()

谢谢!

2 个答案:

答案 0 :(得分:0)

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

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

答案 1 :(得分:0)

只需指定最大流大小

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

因为它是一个无符号类型,你可以牺牲显性来简洁,只需说-1