`cin`会自动生成换行符吗?

use*_*782 4 c++

我们考虑以下代码:

#include<iostream>

int main()
{
    std::cout<<"First-";
    std::cout <<"-Second:";
    int i;
    std::cin>>i;
    std::cout<<"Third in a new line.";

    while(1){}


}
Run Code Online (Sandbox Code Playgroud)

给出值4时的输出i是:

First--Second:4
Third in a newline
Run Code Online (Sandbox Code Playgroud)

cout不打印任何换行符.但在我输入任何值(4)后,i打印换行.可能有两个可能的原因:

  • 键入数字值后按下的Enter键i打印为换行符.
  • cin 自动生成换行符.

虽然第一个原因似乎更合理,但其原因,我想第二个原因也可能是真的,是因为后Third,当我按下打印Enter没有新的线路,即使打印程序继续,因为运行while(1),可呈现意味着控制台窗口没有按Enter按下键时不打印换行符.因此它似乎会cin自动打印换行符.

那么,为什么在我输入后生成换行cin?会cin自动打印换行符吗?

Mik*_*CAT 6

您输入的数字和换行符由控制台软件打印.cin在我的理解中不会打印任何东西.

尝试通过重定向或管道提供一些输入,我猜你会看到没有打印新行.
例如:

$ echo 4 | ./a.out
First--Second:Third in a new line.
Run Code Online (Sandbox Code Playgroud)

$提示在哪里,echo 4 | ./a.out(Enter)是你的输入.


sja*_*rni 3

看看这个: http: //ideone.com/tBj1uS

您可以看到输入和输出是分开的。

stdin

1
2
Run Code Online (Sandbox Code Playgroud)

stdout

First--Second:Third in a new line.
Run Code Online (Sandbox Code Playgroud)

这意味着换行符是由 Enter 键生成的,并且是输入的一部分,而不是输出的一部分。

  • 这是一个在线 IDE。没有控制台。您*事先*输入您的内容。请参阅“stdin”部分。 (2认同)