为什么我要在控制台的第二行输入内容?
int main() {
string s;
while (true) {
cout << "Input: ";
char a = getline(cin, s).get();
cout << a << endl;
}
return 0;
}
答案 0 :(得分:1)
因为您从std::cin
开始两次 。
std::getline
函数返回流,然后在流上调用get
,要求您输入其他内容。
和是因为你实际上在第二个输入上输入了三个字符:'f'
,'d'
和换行符。因此,第一次get
调用将会读取'f'
。然后,下一次迭代getline
调用将显示"d\n"
,get
调用将读取您编写的下一个输入,依此类推。
简单的解决方案?不要拨打get
:
getline(cin, s);
cout << s << '\n';