int n; string s; cin>>n; getline(cin, s); cout<<s.size()<<endl;输入1 Hello World后的结果为什么是0
时间: 2023-06-24 13:09:25 浏览: 261
从键盘中输入一个数后返回结果
4星 · 用户满意度95%
这是因为在输入1后,输入缓冲区中会留下一个换行符,而 `cin` 会读取换行符并将其留在输入缓冲区中。当我们使用 `getline()` 读取输入时,它会读取输入缓冲区中的换行符,并将其视为一个空字符串。因此,`s.size()` 的结果为0。要解决这个问题,可以在读取 `n` 后使用 `getline(cin, s)` 读取输入缓冲区中的换行符,然后再读取字符串。例如:
```
int n;
string s;
cin >> n;
getline(cin, s); // 读取输入缓冲区中的换行符
getline(cin, s); // 读取字符串
cout << s.size() << endl;
```
阅读全文