std::endl 不是多余的吗?
Isn't std::endl redundant?
在以下情况下会发生Flush:
- std:: cerr
- std:: cin
- 程序终止
- 在许多实现中,标准输出是行缓冲的,这意味着"n"无论如何都会刷新
std:: cerr
但是如果我不想写stderr,而是stdout呢?
std:: cin
但是如果我只想给用户一些状态更新而不想要任何输入呢?
与上面一样,如果我想在程序完成之前告诉用户一些内容,该怎么办?程序终止
在许多实现中,标准输出是行缓冲的,这意味着"n"无论如何都会刷新
但是那些不这样做的平台呢?无论目前是否存在这样的平台,我都希望我的代码按照标准定义的方式工作,而不是"嗯,可能在所有实现上都很好"。
如果上述所有条件都适用(第四点实际上总是适用),则需要"手动"冲洗。
在大多数常规程序中,
std::endl
基本上是不必要的,但它几乎无处不在。
不,它不是冗余的,因为沿着'n'
的冲洗的实现并没有被标准强制要求。这只是一个实现特定的行为,而std::endl
的行为总是明确定义的。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 什么是现实中的"endl"(或任何输出操纵器)?它是如何实现的,它如何与操作员<<一起工
- 为什么在C++使用常量函数时常量是多余的?
- std::endl,在 Python 中是否有等价物?(返回 + 刷新)
- 运算符 << 操作加载的 API for std::endl?
- 我在 C++ 中创建了一个函数来递归反转字符串,但是之后如何使功能打印一个 endl?
- 可变参数模板函数:调用没有匹配函数,std::endl
- 模板推导不适用于 std::endl?
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- std::flush 不起作用,而 std::endl 可以
- 如果你在函数中包含 const,是多余的吗?
- 变量上的"const constexpr"是多余的吗?
- "cout<<count<<endl;"没有打印任何内容
- 似乎多余的使用 cin 作为条件与 if,而
- std::make_move_iterator 自 C++17 的类模板参数推导以来是多余的吗?
- C++ 函数将多余的空条目保存到文件中
- 处理 MSVC 中宏中多余的括号
- 使用 std::endl 与 "n" 当 cin 和 cout 被解绑时
- std::endl 不是多余的吗?