精華區beta Programming 關於我們 聯絡資訊
※ 引述《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); -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Chung Cheng University Department: Computer Science and Information Engineering Researching: GNU Toolchain Porting for Unified RISC/DSP Processor with VLIW Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.16 > ╰─╮ ╚╦═╦╝ From:218-171-157-175.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩