检查cin输入,清除输入缓冲区

用户名

C ++的新手-尝试检查输入格式。机智的尝试了一切。任何帮助,将不胜感激。我已将问题分解为以下基本情况:

while(1) {
    cin >> x;
    cout << "asked!" << endl;
    cin.ignore(1000, 'n');
}

将导致无限循环的“询问!” 在第一个无效输入之后(不为x输入int)。我想处理不正确的输入。以下内容将不起作用:

do {
    cin.clear();
    cin >> x >> y;
    if (cin.fail()) 
    {
        cout << "Invalid input." << endl;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }

} while (cin.fail());
托尼·德罗伊(Tony Delroy)

您应该std::cin.clear()在之前立即使用它std::cin.ignore()来清除流的错误状态,否则所有将来的cin操作都将退出/失败。您还可以std::cin更直接地测试操作是否成功...

do {
    if (std::cin >> x >> y) break;
    std::cout << "Invalid input, please try again...\n";
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
} while (true);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:清除标准输入缓冲区

来自分类Dev

在另一个输入请求之前清除cin缓冲区,c ++

来自分类Dev

std :: cin:清空输入缓冲区而不会阻塞

来自分类Dev

std :: cin:清空输入缓冲区而不会阻塞

来自分类Dev

getch()和getchar()清除输入缓冲区的用法的区别?

来自分类Dev

在C中的fgets()之后清除输入缓冲区

来自分类Dev

scanf读取后输入缓冲区是否被清除?

来自分类Dev

读取c中的输入后如何清除缓冲区?

来自分类Dev

如何检查输入缓冲区是否为空?

来自分类Dev

清除缓冲区标准输入

来自分类Dev

我可以循环直到 `std::cin` 在输入缓冲区中看到 `\n` 字符吗?

来自分类Dev

缓冲区溢出的参数输入

来自分类Dev

如何刷新SerialDevice的输入缓冲区

来自分类Dev

从 SuperpoweredAndroidAudioIO 输入读取缓冲区?

来自分类Dev

Linux:python:在raw_input()之前清除输入缓冲区

来自分类Dev

清除键盘缓冲区或阻止输入(C#控制台)

来自分类Dev

在 C++ 中清除空输入缓冲区的安全操作

来自分类Dev

快速将标准输入快速读入缓冲区,无需检查

来自分类Dev

检查输入字符串是否超过缓冲区限制(崩溃)

来自分类Dev

清除键盘缓冲区

来自分类Dev

为什么在LZW压缩中压缩缓冲区需要大于输入缓冲区?

来自分类Dev

从终端输入缓冲区加载到参数堆栈

来自分类Dev

如何使用Directx读取hdmi输入帧缓冲区?

来自分类Dev

getchar()和scanf中的输入缓冲区

来自分类Dev

字符串缓冲区输入问题

来自分类Dev

错误后重置Flex输入缓冲区

来自分类Dev

通过DirectIO传递DeviceIoControl输入缓冲区

来自分类Dev

gtk文本输入从套接字接收缓冲区?

来自分类Dev

确定C缓冲区中多个以空格分隔的输入

Related 相关文章

热门标签

归档