精華區beta Programming 關於我們 聯絡資訊
※ 引述《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]