关于getline(cin,str)的一个小问题

清风揽月云飞絮 2018-03-13 12:46:22
string s;
int main()
{
int n,m,i;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"i:"<<i<<" ";
getline(cin,s);
}
system("pause");
return 0;
}

程序就只有这几行,不明白为什么第一次getline输入被跳过了,求大牛解惑

...全文
348 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2018-03-13
  • 打赏
  • 举报
回复
因为你输入5后按了一个回车,这个回车被第一个getline吸收了....
paschen 版主 2018-03-13
  • 打赏
  • 举报
回复
cin >> n;输入后,缓冲区里还留下了最后的换行符\n,导致后面第一次接收到的实际是换行符,你可以在cin>>n后面加上getchar();接收了这个换行符,后面可正常
自信男孩 2018-03-13
  • 打赏
  • 举报
回复
第一个是因为getline遇到上次输入n后留在输入缓冲里的换行符,getline遇到换行符直接返回。

64,637

社区成员

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

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