gpt4 book ai didi

c++ - std::cin.clear() 无法将输入流恢复到良好状态

转载 作者:搜寻专家 更新时间:2023-10-31 00:21:10 24 4
gpt4 key购买 nike

为了测试 bool i/o,我尝试运行这个短程序:

#include <iostream>

int main()
{
while(true)
{
bool f;
if (std::cin >> f)
std::cout << f << '\n';
else
{
std::cout << "i/o error\n";
std::cin.clear();
}
}
return 0;
}

这是我得到的输出:

g++ -Wall -ansi -pedantic -o boolio boolio.cpp
./boolio
0
0
1
1
2
i/o error
-
i/o error
t
i/o error
i/o error
i/o error
... (infinite loop)

我想知道为什么当我输入 't' 时会出现无限循环,以及如何防止它。

谢谢。

最佳答案

清除cin后添加这一行:

std::cin.ignore();

这样,流会忽略其缓冲区中剩余的任何内容。

关于c++ - std::cin.clear() 无法将输入流恢复到良好状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4960399/

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