为什么 C++ 的 getline
函数会忽略我输入的第一个字符?
在this post ,罪魁祸首是 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;
正在吃第一个数字。然后 getline()
出现并获取输入的其余部分。删除 cin >> user_input;
它应该可以正常工作。
关于c++ - getline 忽略字符串输入的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765802/