在std :: cout之后使用std :: cin时,换行符来自哪里?

Ock*_*ham 4 c++

请考虑以下简单示例

#include <iostream> 

int main() 
{
    using namespace std;
    char name[30];        

    cout << "What is your first name: ";
    cin >> name;
    cout << "Hello " << name << endl;

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

该程序的示例输出如下:

What is your first name: Bob
Hello Bob
Run Code Online (Sandbox Code Playgroud)

这个程序按预期工作,但我不明白输出流如何知道转到下一行.我基本上考虑了两个独立的信息流,并且对输出流如何知道转到下一个信息感到困惑,因为它后面跟着输入.换行符来自哪里?

M.M*_*M.M 6

输出流不会转到下一行.

键入名称后按Enter键.终端具有本地回显,这意味着您在键盘上输入的字符将回显到终端.

您在屏幕上看到的"Bob"和换行符是因为您键入了它们,而不是因为它们是cout由您的程序发送的.

如果您使用关闭本地回显的终端,或者您从包含的文件输入管道输入Bob,那么输出将如下所示:

What is your first name: Hello Bob
Run Code Online (Sandbox Code Playgroud)