最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天讯息:cin与CTRL+z的问题

来源:博客园


(资料图)

这个问题源自于之前调试AVL树时,要输入两次值,我在第一次cin时,用CTRL+Z结束输入,之后的cin 程序执行直接就跳过了,不能输入了;;;

解决方法:在第一次输入后的程序加上以下两句时就可以了;

cin.clear();//cin.sync();

分析:CTRL + Z后;eof、fail 位都会true;clear()之后good位位true;

io标准库条件状态成员;

代码测试:

#include using namespace std;int main(){    int num;    cout << "first num :" << endl;    while(cin >> num) { }    cout << "first num  is:" << num << endl;    cout << "goodbit:" << cin.good() << endl;    cout << "eofbit :" << cin.eof() << endl;    cout << "failbit:" << cin.fail() << endl;    cout << "badbit :" << cin.bad() << endl;        cin.clear();    cout << "after clear()" << endl;    cout << "goodbit:" << cin.good() << endl;    cout << "eofbit :" << cin.eof() << endl;    cout << "failbit:" << cin.fail() << endl;    cout << "badbit :" << cin.bad() << endl;    int tmp;    cin >> tmp;    cout << "second num: " << tmp << endl;    system("pause");    return 0;}/*没有cin.clear()的输出:first num :10^Zfirst num  is:10goodbit:0eofbit :1failbit:1badbit :0second num: 6422400请按任意键继续. . .*//*first num :10^Zfirst num  is:10goodbit:0eofbit :1failbit:1badbit :0after clear()goodbit:1eofbit :0failbit:0badbit :011second num: 11请按任意键继续. . .*/

关键词: