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

Why should I input on the second line of the console?

为什么我要在控制台的第二行输入一些东西?

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

因为您从 std::cin.

阅读了 两次

std::getline 函数 returns 流,然后您在流上调用 get,这需要您输入其他内容。

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

简单的解决方案?不要调用 get:

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