cin 后使用 getline()

若要在 cin 后使用 getline(),需要用 cin.ignore() 跳过接受的回车符,否则 getline() 会无法接收到目标字符串。

看以下这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include<string>

using namespace std;

int main()
{
int a;
cin >> a;
string s;
cin.ignore(); // 跳过'/n'
getline(cin, s);
cout << a << " " << s << endl;
return 0;
}

若没有 cin.ignore()s 接收到的字符串始终为空行。