[問題] cin overflow問題
開發平台(Platform): (Ex: Win10, Linux, ...)
WIN10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VS2013
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
<time.h> <iostream>
while(1){
int i;
cin >> i ;
if(i==0)break;
else if(i<0){
cout << "overflow or invalid input\n";
i=0;
cin.clear();
}
else {
cout << montePI(i) << endl;
}
cin.get();
}
以上是簡略過的code,int i是我要抓給montePI的輸入項(需要正整數)。
cin.get()拿來清理'\n'
設定當輸入為0時代表程式結束。
我想問的問題是,如果假設輸入一定是數字,但有可能超過int的範圍,
即使unsigned還是有超過2^8-1,想問我該怎麼偵測比較恰當,
以及,當錯誤發生時,我該怎麼重置輸入buffer的狀態比較好?
目前有時候i回保留上一次的輸入結果,
不確定是buffer沒清乾淨還是其他問題。
可以只給我goole的方向,讓我自己先研究研究,新手問題麻煩各位了~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.176.65
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1505458851.A.ED1.html
→
09/15 15:19, , 1F
09/15 15:19, 1F
→
09/15 15:22, , 2F
09/15 15:22, 2F
→
09/15 15:22, , 3F
09/15 15:22, 3F
→
09/15 15:23, , 4F
09/15 15:23, 4F
→
09/15 15:26, , 5F
09/15 15:26, 5F
→
09/15 15:40, , 6F
09/15 15:40, 6F
→
09/15 15:52, , 7F
09/15 15:52, 7F
→
09/15 15:53, , 8F
09/15 15:53, 8F
→
09/15 15:57, , 9F
09/15 15:57, 9F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):