C++的getline函数为什么会忽略输入的第一个字符?
在这篇文章中,罪魁祸首是cin.ignore()函数,但我在我的代码中没有使用cin.ignore()函数。
以下是我尝试做的非常基本的示例:
#include <iostream>
#include <string>
using namespace std;
int main(){
string user_input;
cout << "input: ";
cin >> user_input;
getline(cin,user_input);
cout << "length: " << user_input.length() << endl;
cout << "your input: " << user_input << endl;
return 0;
}
问题是,输出结果完全错误:
input: 1 2 3
length: 4
your input: 2 3
显然,字符串的长度应该包括空格,应为
5
而不是4
。您还可以看到user_input
的第一个字符丢失了。有人能解释一下为什么这段代码给出错误的输出以及我需要做什么来解决这个问题吗?我从未处理过包含空格的字符串。我很好奇是什么导致了这个问题的出现! :)
cin>>user_input
读取第一个数字吗? - andand