- 主题:std::cin咋失效了?
#include <iostream> // For standard streams
int main()
{
int a = -1;
std::cin >> a;
std::cout << "state-fail:"<<std::cin.fail() << std::endl;
std::cout << "state-good:"<<std::cin.good() << std::endl;
std::cout << "state-bad:"<<std::cin.bad() << std::endl;
std::cout << "state-eof:"<<std::cin.eof() << std::endl;
std::cin.clear();
std::cout << " after std::cin.clear()" << std::endl;
std::cout << "state-fail:"<<std::cin.fail() << std::endl;
std::cout << "state-good:"<<std::cin.good() << std::endl;
std::cout << "state-bad:"<<std::cin.bad() << std::endl;
std::cout << "state-eof:"<<std::cin.eof() << std::endl;
std::cout << "a = " << a << std::endl;
std::cin >> a;//并没有执行!!!!!
std::cout << "a = " << a << std::endl;
return 0;
}
>> ./a.out
q
state-fail:1
state-good:0
state-bad:0
state-eof:0
after std::cin.clear()
state-fail:0
state-good:1
state-bad:0
state-eof:0
a = 0
a = 0
首先输入q,导致std::cin失效,但是我clear()以后,依然不可用,没有道理啊。
--
FROM 123.119.150.*
clear之后你输入的q还是没有被消耗掉,下一次输入看见的还是q。调ignore把它消耗掉。
【 在 ActiveIon 的大作中提到: 】
: #include <iostream> // For standard streams
: int main()
: {
: ...................
--
FROM 124.78.171.*
谢谢,用ignore确实好使。
【 在 ilovecpp 的大作中提到: 】
: clear之后你输入的q还是没有被消耗掉,下一次输入看见的还是q。调ignore把它消耗掉。
--
FROM 61.149.156.*