有如下代码:
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老中医!