我为什么要输入控制台的第二行?

时间:2017-04-20 11:24:44

标签: c++ stream getline

enter image description here

为什么我要在控制台的第二行输入内容?

int main() {
    string s;
    while (true) {
        cout << "Input: ";
        char a = getline(cin, s).get();
        cout << a << endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

因为您从std::cin开始两次

std::getline函数返回流,然后在流上调用get,要求您输入其他内容。

你显然只需要输入一次的

是因为你实际上在第二个输入上输入了三个字符:'f''d'换行符。因此,第一次get调用将会读取'f'。然后,下一次迭代getline调用将显示"d\n"get调用将读取您编写的下一个输入,依此类推。

简单的解决方案?不要拨打get

getline(cin, s);
cout << s << '\n';