我们考虑以下代码:
#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自动打印换行符吗?
您输入的数字和换行符由控制台软件打印.cin在我的理解中不会打印任何东西.
尝试通过重定向或管道提供一些输入,我猜你会看到没有打印新行.
例如:
$ echo 4 | ./a.out
First--Second:Third in a new line.
Run Code Online (Sandbox Code Playgroud)
$提示在哪里,echo 4 | ./a.out(Enter)是你的输入.
看看这个: 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 键生成的,并且是输入的一部分,而不是输出的一部分。
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |