看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Dev C++ 書上寫說: cin.get(num); //此時輸入一個值按Enter 則這個\n會延續到下次輸入 所以要這樣寫: cin.get(num); cin.get(); //用cin.get()來吸收多餘的\n 可是如果我想要輸入連續字串 請問該如何吸收多餘的值呢? 下面範例是希望可以做到這樣流程: 輸入名字 -> Enter -> 輸入年齡 -> Enter 最多三個中文字 如果名字輸入"歐陽小明" 則name就是"歐陽小" 不用做界限檢查 第一個失敗範例: char name[2*3+1]; int age; int i=0; do{ cin>>name[i]; }while(++i<6); cin>>age; cout<<name<<endl; cout<<age<<endl; 第二個失敗範例: char name[2*3+1]; int age; cin.getline(name,2*3+1); cin>>age; cout<<name<<endl; cout<<age<<endl; 請問各位大大 有比較簡單的語法可以達到我的需求嗎? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.52.179 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1476874672.A.910.html
longlongint: cin.ignore()符合你的要求嗎 10/19 20:47
是直接把 cin.ignore(); 加到裡面嗎? 這樣結果還是會影響到age的輸入
pttworld: 只想語法,if(i > 0) cin.get(); 在cin name上一列。 10/19 21:04
試過之後還是bug
pttworld: keywords: wchar_t 10/19 21:06
stupid0319: 書上都寫給你解法了XDXD 10/19 21:07
因為用法不同 書上就是很單純輸入一個整數 吃掉一個\n
stupid0319: 如果把name的size弄大一點大概16吧,再name[6] = '\0'; 10/19 21:19
這個好像沒問題 感謝!!
stupid0319: 或while(cin.get() != '\n');我隨便猜的 10/19 21:22
※ 編輯: ReiFu21 (61.230.52.179), 10/19/2016 21:27:53
pttworld: 先用英文名測試。已給關鍵字。 10/19 22:11
x000032001: 這樣呢 http://ideone.com/gJ1yO4 10/20 00:01