是否可以重写std::endl
Is it possible to override std::endl?
我正在创建围绕std::ofstream
的包装器类。我已经覆盖了所有的std::ofstream
方法。现在,我需要重写std::endl
方法以使用包装器类而不是basic_ostream
。
是否有可能覆盖std::endl
方法?谁能给我举个例子?
第一:永远不允许在::std
名称空间中重载函数。实际上,您只允许专门化::std
命名空间中的现有模板,并且只有在有限制的情况下。
endl
的实际作用来处理它的情况。效应:调用os.put (os.widen (' n ')),然后os.flush()。
因此,您不需要重写任何内容,只需提供正确的成员函数来处理put
, widen
和flush
的序列。
您可以为std::endl
的类型重写operator<<
,然后在重载内部检查是否传递了std::endl。然而,我不认为你这样做是明智的,虽然没有真正知道你想要实现什么,很难提出一个更好的方法。我认为你应该描述你的目标是什么,而不是问如何实现某个(有缺陷的)解决方案。
相关文章:
- std::endl,在 Python 中是否有等价物?(返回 + 刷新)
- 运算符 << 操作加载的 API for std::endl?
- 可变参数模板函数:调用没有匹配函数,std::endl
- 模板推导不适用于 std::endl?
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- std::flush 不起作用,而 std::endl 可以
- 使用 std::endl 与 "n" 当 cin 和 cout 被解绑时
- C++:std::endl 和运算符的编译错误>>
- 缓冲区刷新究竟是如何工作的(std::endl 和 之间的区别)?
- 在Ostream上使用std :: endl使我的文件二进制
- std::cout doen不喜欢 std::endl 和 String in conditional-if
- 为什么模板运算符<<不推导出 std::endl?
- 在我编译的标准库中std::endl在哪里
- C++ std::endl 的多线程程序 I/O 问题
- 如有必要,如何让 std::endl 输出"rn"?
- C 无法致电STD :: endl
- 与 std::endl 的"运算符<<"不匹配,重载后
- 为什么将 std::endl 与 ostringstream 一起使用会影响输出速度
- 为什么在语句"std::cout << std::endl;"中使用时需要命名空间限定,给定依赖于参数的查找?
- 为什么要编译endl(std::cout)