如果在使用 getline(cin, s) 之前已经使用过 cin 或者是其他的输入函数,那么可能在输入缓存中还存在换行符或者是其他的空白字符,这将会影响到 getline(cin, s) 的读取操作。如何解决
时间: 2024-03-14 17:42:44 浏览: 38
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
这个问题可以通过清空输入缓存来解决。在调用 getline(cin, s) 之前,可以使用 cin.ignore() 函数来清空输入缓存中的任何残留字符,以确保 getline(cin, s) 从新的一行开始读取输入。代码示例如下:
```
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
int n;
// 输入一个整数
cin >> n;
// 清空输入缓存
cin.ignore();
// 输入一行字符串
getline(cin, s);
cout << n << endl << s << endl;
return 0;
}
```
在上面的示例中,我们先使用 cin 输入了一个整数,然后使用 cin.ignore() 函数清空了输入缓存,最后使用 getline(cin, s) 读取了一行字符串,并将整数和字符串输出到屏幕上。
阅读全文