c++ - `cin` 会自动产生换行符吗?

标签 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){}


}

i 的值为 4 时的输出是:

First--Second:4
Third in a newline

cout 不打印任何换行符。但是在我为 i 输入任何值(4)之后,打印了一个换行符。这可能有两个可能的原因:

  • The Enter key I press after typing a numerical value for i is printed as a newline.
  • cin automatically generates a newline.

虽然第一个原因似乎更合理,但我认为第二个原因也可能是真的,因为当我按 Enter 时打印了 Third 之后没有新的由于 while(1),即使程序继续运行,也会打印行——这意味着当按下 Enter 键时,控制台窗口不会打印换行符。所以看起来 cin 会自动打印一个换行符。

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

最佳答案

您输入的数字和换行符由控制台软件打印cin 在我看来不会打印任何内容。

尝试通过重定向或管道提供一些输入,我想您将看不到打印的新行。
例如:

$ echo 4 | ./a.out
First--Second:Third in a new line.

$ 是提示符,echo 4 | ./a.out(Enter) 是您的输入。

关于c++ - `cin` 会自动产生换行符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35670506/

相关文章:

c# - 如何获取有关 IDispatch COM 接口(interface)故障的更多调试信息

c++ - decltype 中的表达式是否被执行,或者只是被检查以进行验证?

c++ - 有没有办法为符合标准的 vector 实现插入方法?

c++ - GetTokenInformation 在 Windows XP 64 位上的意外行为

c++ - 在 C++ 中使用 float 的 Memcpy

c++ - 使c++可执行

c++ - DirectX 多个 DLL 版本?

c++ - Windows 上 glibc 的 backtrace() 和 backtrace_symbols() 的对应物?

c++ - 如何向内置类/类型添加更多函数,如 int、double、std::string 等

c++ - 为什么 std::sort 不按字母顺序排列字符串数组?