cin后不能跟getline(C++学习笔记)

有如下代码:
int n;
cin >> n;
string str;
getline(cin,str);
但我们运行时却发现getline直接被略过。
其实是当我们cin时用了回车结束输入,这时回车转换为\n仍留在缓冲区,\n随即被输入到getline,getline就直接被关闭了。
解决办法1:用cin.ignore
cin.ignore常规用法是cin.ignore(4,“\n”);
作用是从缓冲区舍弃字符,到第四个停止,如果遇到换行符,舍弃换行符之前的所有字符
只需在cin下一行输入cin.ignore(1,“\n”);
解决办法2:用ws
ws可以消除缓冲区里的空格和换行符,不过需要先#include
代码如下:cin>>n>>ws;

1 个赞

ignore() 的第 2 个参数是字符不是字符串哈
cin.ignore(1, '\n')

出现了!cpp老中医!:smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts: