[問題] cin要怎麼用簡單語法吸收多餘的值?

看板C_and_CPP作者 (ReiFu)時間9年前 (2016/10/19 18:57), 9年前編輯推噓0(008)
留言8則, 4人參與, 最新討論串1/1
開發平台(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

10/19 20:47, , 1F
cin.ignore()符合你的要求嗎
10/19 20:47, 1F
是直接把 cin.ignore(); 加到裡面嗎? 這樣結果還是會影響到age的輸入

10/19 21:04, , 2F
只想語法,if(i > 0) cin.get(); 在cin name上一列。
10/19 21:04, 2F
試過之後還是bug

10/19 21:06, , 3F
keywords: wchar_t
10/19 21:06, 3F

10/19 21:07, , 4F
書上都寫給你解法了XDXD
10/19 21:07, 4F
因為用法不同 書上就是很單純輸入一個整數 吃掉一個\n

10/19 21:19, , 5F
如果把name的size弄大一點大概16吧,再name[6] = '\0';
10/19 21:19, 5F
這個好像沒問題 感謝!!

10/19 21:22, , 6F
或while(cin.get() != '\n');我隨便猜的
10/19 21:22, 6F
※ 編輯: ReiFu21 (61.230.52.179), 10/19/2016 21:27:53

10/19 22:11, , 7F
先用英文名測試。已給關鍵字。
10/19 22:11, 7F

10/20 00:01, , 8F
10/20 00:01, 8F
文章代碼(AID): #1O1r6maG (C_and_CPP)