[問題] C++的IO問題 clear()無效!?
#include<iostream>
#include<string>
#include<stdexcept>
using namespace std;
int main()
{
int v;
while(cin>>v, !cin.eof())
{
if(cin.bad())
throw runtime_error("IO stream corrupted");
if(cin.fail())
{
cout<<cin.eof()<<cin.fail()<<cin.bad()<<endl;
cin.clear();
cout<<cin.eof()<<cin.fail()<<cin.bad()<<endl;
cout<<"bad data, try again:"<<endl;
continue;
}
cout<<"value of v:"<<v<<endl;
}
system("pause");
return 0;
}
這是我照書中範例練習的
我不懂為何我輸入
1234[enter] :印出value of v:1234 (成功)
d[enter] :產生無窮迴圈 (失敗)
把"d"給予整數變數,failbit變成1,所以會進入if(cin.fail())的區塊裡
我在裡面用cin.clear() 理應failbit、eofbit、badbit都變成0
而在cout時也用endl清空buffer
為什麼還會造成endless loop呢??
(我是學C++ Primer 4/e中文版的 不曉得哪裡有問題 懇請各位指導一下:) )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.6.13.94
→
09/05 17:51, , 1F
09/05 17:51, 1F
→
09/05 18:32, , 2F
09/05 18:32, 2F
→
09/05 18:32, , 3F
09/05 18:32, 3F
→
09/05 18:32, , 4F
09/05 18:32, 4F
→
09/05 18:33, , 5F
09/05 18:33, 5F
→
09/05 18:33, , 6F
09/05 18:33, 6F
→
09/05 18:34, , 7F
09/05 18:34, 7F