作者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/cn.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