Re: [問題] cin overflow問題
<iostream> 畢業後就無再用了... 正好實驗一下,發現 cin.clear() 與
cin.ignore() 應該是你指的“重置輸入buffer“,留意 break 與 continue 的使用:
#include <iostream>
#include <climits>
using namespace std;
void montePI(int k) { }
int main(void)
{
cout << "INT_MAX = " << INT_MAX << endl << endl; // 可用此數+1頂爆int i看看
int i = 0;
while (1)
{
cout << "PROMPT> " << flush; // 讓我知道 cin 正在作用
cin >> i;
if (cin.eof())
{
cout << "End of data, bye" << endl;
break;
}
else if (cin.fail()) // 偵測 overflow, format 問題...等等
{
cout << "Bad input, skipped and continue" << endl;
// "重置輸入buffer"
cin.clear();
cin.ignore(INT_MAX, '\n');
continue;
}
else if (i==0) // EOF 好了,這樣有點怪
{
cout << "Found 0, exit" << endl;
break;
}
montePI(i);
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 14.199.97.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1505486423.A.E1B.html
→
09/16 01:55, , 1F
09/16 01:55, 1F
→
09/16 01:56, , 2F
09/16 01:56, 2F
→
09/16 01:56, , 3F
09/16 01:56, 3F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):