【发布时间】:2015-06-10 19:41:03
【问题描述】:
为什么 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消费了第一个号码吗?
标签: c++