※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
> ※ 引述《tonyder.bbs@bbs.yuntech.edu.tw (綺緣)》之銘言:
> > 請問一個很基礎的問題
> > 如果想限制只能輸入數字要怎麼改寫這個程式(只要輸入abc就會當掉)
> > 自己測試的結果
> > 如果使用迴圈測試cin是否錯誤
> > 第一次錯誤接著就不會執行cin這行
> > 所以就變成無窮迴圈了
> > 請問有其他解決的辦法媽
> 並不是光用 .clear() 清除狀態旗標就沒事了,
> 將狀態旗標清除之後只是讓 stream 能再次運作,
> 不正確的資料還是留在 stream 的 buffer 裡,
> 你要設法把它消耗掉。
> 我曾經提過兩種方式:
> 1. cin.ignore(numeric_limits<std::streamsize>::max());
> 這個需要 #include <limits>
> 2. string str; cin >> str;
> 這種方式是可以清到泛空白字元之前
> coco (coco@hifly.to) 也曾經在這個主題提出過一種方法:
> cin.seekg(0, ios_base::end);
感恩!!
謝謝回答
可以在請問一下嗎第二種跟第三種方式我都知道原理
第一種的原理是??
可以麻煩告知嗎謝謝
--
※ Origin: 雲林科技大學藍天使 <bbs.yuntech.edu.tw> [From: 140.125.207.33]