gpt4 book ai didi

c++ - 如何处理输入流中留下的无关字符? (cin 跳过)

转载 作者:行者123 更新时间:2023-11-27 23:34:53 25 4
gpt4 key购买 nike

对于这里的菜鸟问题,我深表歉意,但我只是在学习 C++,我正在寻找处理这个问题的标准方法。我正在使用 VS2005。

给定一个程序:

#include <iostream>

using namespace std;

int main( )
{
while ( true )
{
cout << "enter anything but an integer and watch me loop." << endl;
int i;
cin >> i;
}
return 0;
}

如果您输入的不是整数,程序将永远不允许您再次输入任何内容。现在,我意识到这是因为格式失败后流中还剩下输入,所以每次调用 cin << i 只是读取到下一个结束行(我认为)。你们如何清除流或处理这个问题?这一定很常见。

最佳答案

用 if 包围 cin 调用。

如果读取到错误的数据,cin 将返回 false。

所以:

if (!cin >> i) {
cin.clear();
cin.ignore(INT_MAX, '\n');
cout << "Haha, your looping efforts have been thwarted dear sir\n";
}

cin.flush() 应该可以解决问题(根据 cppreference.com),但显然不是在 VS 上。

cin.clear() 将所有标志重置为良好状态。cin.ignore 一个大数字,直到 '\n' 应该工作。

关于c++ - 如何处理输入流中留下的无关字符? (cin 跳过),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317424/

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