作者ReiFu21 (ReiFu)
看板C_and_CPP
標題[問題] cin要怎麼用簡單語法吸收多餘的值?
時間Wed Oct 19 18:57:49 2016
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1476874672.A.910.html
1F:→ longlongint: cin.ignore()符合你的要求嗎 10/19 20:47
是直接把 cin.ignore(); 加到裡面嗎? 這樣結果還是會影響到age的輸入
2F:→ pttworld: 只想語法,if(i > 0) cin.get(); 在cin name上一列。 10/19 21:04
試過之後還是bug
3F:→ pttworld: keywords: wchar_t 10/19 21:06
4F:→ stupid0319: 書上都寫給你解法了XDXD 10/19 21:07
因為用法不同 書上就是很單純輸入一個整數 吃掉一個\n
5F:→ stupid0319: 如果把name的size弄大一點大概16吧,再name[6] = '\0'; 10/19 21:19
這個好像沒問題 感謝!!
6F:→ stupid0319: 或while(cin.get() != '\n');我隨便猜的 10/19 21:22
※ 編輯: ReiFu21 (61.230.52.179), 10/19/2016 21:27:53
7F:→ pttworld: 先用英文名測試。已給關鍵字。 10/19 22:11