请教一个关于getline函数的问题
各位高手:
请教一个关于getline函数的问题。
我感觉如果在getline之前有cin之类的,getline会吃一个回车;用getline从键盘读取一行字符串,如:getline(cin,str,'\n');最后还要多输一个回车。请问这怎么解决啊?
多谢!
问题点数:100、回复次数:12Top
1 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-16 00:24:36 得分 0
定义一个char stupidChar;
然后在每一次用 getline 后,都跟一个:
stupidChar = getchar();Top
2 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-16 00:25:21 得分 0
对于getline也应该是一样的,反正接受的这个字符是不用的。。。Top
3 楼wppwpeewp(eewp)回复于 2006-05-16 08:27:34 得分 0
这种问题是经常遇到的,要灵活使用getchar()来接受多余的字符。Top
4 楼lxhtzy(天之翼)回复于 2006-11-24 17:48:13 得分 0
應該是getch()吧Top
5 楼chai2010(C++/Qt...)回复于 2006-11-24 17:54:30 得分 0
可惜getch()不是ANSI...Top
6 楼alan001(星岛孤裔林郎君)回复于 2006-11-24 18:01:36 得分 0
试一试Top
7 楼cnhgj(戏子) (没时间练太极)回复于 2006-11-25 00:50:31 得分 0
int main()
{
int i;
cin>>i;
cout<<i<<endl;
fflush(stdin);
string str;
getline(cin, str);
cout<<str;
return 0;
}
用fflush(stdin);Top
8 楼alan001(星岛孤裔林郎君)回复于 2006-11-28 15:21:49 得分 0
getline(cin, str);Top
9 楼jixingzhong(瞌睡虫·星辰)回复于 2006-11-28 15:56:01 得分 0
搞个字符接收一下 回车就可以了 ~~Top
10 楼jixingzhong(瞌睡虫·星辰)回复于 2006-11-28 16:04:20 得分 0
最简单的:
cin>>i;
getchar(); //把剩余的一个回车吸收掉
//这种方法只能吸收一个回车,如果输入时候带了空格什么的就不行了
string str;
getline(cin, str);
cout<<str<<endl;Top
11 楼jixingzhong(瞌睡虫·星辰)回复于 2006-11-28 16:05:53 得分 0
甚至可以这样:
cin>>i;
string str;
getline(cin, str); //吸收输入i后的其他内容,
getline(cin, str); //这里才是 等待输入字符串
cout<<str<<endl;Top
12 楼Jim_King_2000()回复于 2006-11-28 16:21:14 得分 0
我想应该用Ctrl+Z结束吧Top





