getline()后两个回车的问题。

Uncle_Chesur 2010-12-06 01:24:23
我想知道输入什么之后getline会进入到下一行的输入。于是
while(getline(cin,str))
{
cout<<"!!!"<<endl;
}
为什么我打完一串字符之后,回车两次后屏幕才会输出“!!!”呢?
同样的while(cin>>s),按ctrl+z后还要回车一次才结束。为什么呢?
...全文
251 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xspace_time 2010-12-06
  • 打赏
  • 举报
回复
cin一次不是要回车一次吗, 这时候仅仅是将字符输入了键盘缓冲区而已
刚才回另一个帖子是偶尔发现,原来如此
#include<stdlib.h>
#include<iostream.h>
main()
{
cout<<"x";
system(pause);
}
运行后你会看到虽然cout在system之前,但先显示出了system,按回车后才显示出x,这也就说明你的问题
cin得到的回车符被getline存在str里面,而cout<<"!!!"的内容!!!中并没有\n,因此只有在你为cout按回车后才会刷新键盘缓冲区,输出!!!
Metrosexual 2010-12-06
  • 打赏
  • 举报
回复
这个好像一直是这样的,与编译器有关!
龙哥依旧 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 uncle_chesur 的回复:]
哥最近的贴为什么总是没人顶?结贴率也不低啊!
[/Quote]:(
luciferisnotsatan 2010-12-06
  • 打赏
  • 举报
回复
VC2005编出来和lz一样
太乙 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 uncle_chesur 的回复:]

引用 2 楼 hqin6 的回复:
lz用的什么编译器?

VC6.0
[/Quote]vc6.0对getline的实现有个bug,lz可以查查
Uncle_Chesur 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hqin6 的回复:]
lz用的什么编译器?
[/Quote]
VC6.0
太乙 2010-12-06
  • 打赏
  • 举报
回复
lz用的什么编译器?
Uncle_Chesur 2010-12-06
  • 打赏
  • 举报
回复
哥最近的贴为什么总是没人顶?结贴率也不低啊!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧