gpt4 book ai didi

c++ - cin.sync 和 clear 不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:05 25 4
gpt4 key购买 nike

        while(cout << "How many elements do you want: " && !(cin >> el))
{
cin.sync();
cin.clear();
cout << " Invalid input!\n";
}

el 是一个 int,当我输入一个字符时,循环进入无限循环。我按照 SO 中的一篇帖子修复了错误的输入,但它不起作用,它会无限循环打印“你想要多少元素:输入无效!”我也尝试了 ignore(10000, "\n") ,但仍然无法正常工作...

最佳答案

如果从流中读取时发生错误,则会设置一个错误标志,并且在您清除错误标志之前无法再进行读取。

That's why you get an infinite loop.

改为使用:

cin.clear();  // clears the error flags  
// this line discards all the input waiting in the stream
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - cin.sync 和 clear 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com