'\n'
是什么? 和 std::endl
有什么区别?#
简单而言, '\n'
(newline) 才是换行符.
输入输出存在缓冲区, 当我们通过 cin
输入或通过 cout
输出时, 程序总是将内容先填入 各自的 缓冲区中, 等到有一定的量后, 再一次性将缓冲区中内容排出, 这样的过程称为刷新 (flush).
除了缓冲区内填入了一定量的内容以外, 还有什么情况缓冲区会刷新? 常见的有,
cout.flush();
,cout << std::flush;
.cin
和cout
是相互绑定的 (cin.tie(cout);
), 当cin
进行输入时,cout
的缓冲区就会刷新.
而 cout << std::endl
的效果相当于 cout << '\n' << std::flush
.
提示
cin
不存在可直接使用的刷新方法, 可以使用 cin.ignore(std::numeric_limits<std::streamsize>::max(), delim)
忽略缓冲区中内容直到 delim
字符.