C++ getline问题

我用的是VC++2008,一般程序写类似getline(cin,name)的时候,执行起来没有问题。但是有时在写面向对象的程序的时候,在主函数里写这一句,往往会不执行而直... 我用的是VC++ 2008,一般程序写类似getline(cin,name)的时候,执行起来没有问题。但是有时在写面向对象的程序的时候,在主函数里写这一句,往往会不执行而直接跳过去。比如在switch结构体中,或者循环中输入:
cout<<"Enter your name"<<endl;
getline(cin,name);
cout<<name<<"a";
实际程序执行的时候跳过了getline一句,只显示a。在循环中,getline只执行了一次。后来摸索发现若在getline一句之前加cin.ignore(),或者重复geiline一句,则可以正常执行getline语句,而ignore语句会被跳过。
请问这是VC++的bug还是其他的原因,有没有更好的解决办法?请高人指点。
展开
 我来答
rob2468
推荐于2016-01-20 · TA获得超过187个赞
知道答主
回答量:85
采纳率:0%
帮助的人:82.4万
展开全部
在你写getline()函数之前,一定有使用过了回车了吧
不论你输入的是字符,数字或是回车,空格符,getline()函数都接收
而cin>>这种输入方式却是忽略回车的,如果你在getline()之前cin的一个数,回车被cin忽略了,却被getline函数接收了,感觉就是这条语句被跳过了
所以解决的办法是在getline函数之前再使用getline一次,将输入流里的回车符接收掉,后面就能正常输入了
无尽的华尔兹Cluw3
2010-03-18 · TA获得超过157个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:0
展开全部
正确写法是:
cin.getline(name,100,'q');
意思是,从输入流获取100个输入给name,遇到字符q结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式