问题标签 [endl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::endl 的重载处理?
我想定义一个类MyStream
,以便:
给出输出
基本上,我想在前面插入一个“[blah]”,然后在每个非终止 std::endl
之后插入?
这里的困难不是逻辑管理,而是检测和重载std::endl
. 有没有一种优雅的方式来做到这一点?
谢谢!
编辑:我不需要关于逻辑管理的建议。我需要知道如何检测/重载打印std::endl
.
c++ - 比较 std::endl 的地址
我正在检查一段现有代码,发现它在使用 Visual C++ 9 和 MinGW 编译时表现不同:
顾名思义,这是一个日志类,它重载operator<<()
以从流中剥离 endls。
我发现了为什么它的行为不同:p_manip == static_cast...
MinGW 测试成功,而 Visual C++ 9 测试失败。
- MinGW“忽略”转换并返回
std::endl
;的真实地址 - Visual C++ 9 实际上将指针转换为 endl 并返回不同的地址。
我将测试更改为if ( p_manip == std::endl )
,现在它的行为符合预期。
我的问题是:如此复杂(而且事实上是错误的)测试背后的基本原理是什么?
为了完整起见:
c++ - 重载 operator<< 时将 C++ 流作为参数
我正在尝试编写自己的日志记录类并将其用作流:
这是我开始的代码:
但是我在尝试编译时遇到错误,说没有 operator<< 的定义(使用 std::endl 时):
所以,我一直试图重载 operator<< 来接受这种流,但这让我发疯。我不知道该怎么做。例如,我一直在查看 ostream 头文件中 std::endl 的定义,并使用此头文件编写了一个函数:
但没有运气。我尝试过使用模板而不是直接使用 char,也尝试过简单地使用“const ostream& os”,但什么也没有。
让我烦恼的另一件事是,在错误输出中, operator<< 的第一个参数发生了变化,有时它是对指针的引用,有时看起来像双重引用......
c++ - 自定义流刷新类型
关于流和东西的问题,我有多个问题,但经过一番思考,我得出的结论是,我所需要的只是一个自定义刷新类型。我希望我的流在换行时刷新。它省去了输入 std::endl 的麻烦。有可能实现这一点吗?我正在使用带有自定义 stringbuf 的 ostream。
c++ - Difference between "endl" and "\n"
Possible Duplicate:
C++: “std::endl” vs “\n”
I'm wondering if there is any significant difference between these two ways to print newline :
Is there any practical difference?
c++ - XCode 4 仅显示带有 endl 的 cout 语句
我的 cout 语句有一个非常奇怪的问题。我只用 XCode 4 试过这个。例如,如果我写,
我在调试器控制台中看到了所有三个输出语句。但是,如果我将顺序更改为,
我只看到前两个 couts。更奇怪的是,如果我将代码更改为,
我看到所有三个陈述。
当我改变它的位置时,为什么我看不到“这不是” cout 声明?
c++ - 什么是 C++ iostream endl 惨败?
我正在听Andrei Alexandrescu 关于 D 编程语言的谷歌演讲,当时他发表了一篇关于“endl”惨败的文章。我只是认为 endl 是表示行尾并刷新流缓冲区的首选方式。为什么它被认为是惨败?我不应该在我的代码中使用它吗?
c++ - 流缓冲区实现的 std::endl 和 '\n' 之间的差异
我目前正在尝试实现 stringbuf 的子类,以允许缓冲区标记特定字符(在我的情况下为“\n”)并在发生此字符时采取行动(将消息转储到记录器并随后在我的案子)。为了实现这个目标,我覆盖了 sputc (以实现监视 '\n')和 xsputn (确实使用 sputc,因为默认情况下 GCC 实现似乎不这样做)。出于调试目的,我让 sputc 将传递给它的每个字符写出到 stdout。
现在这是我的问题:如果我使用类似的东西
sputc 接收除应由 std::endl 引入的 '\n' 之外的每个字符,因此未完成预期的操作,因为未传递 '\n'。如果我使用类似的东西
甚至
一切都按预期工作,我的 sputc 实现得到了 '\n' 字符。
所以我的问题是:对于后面的stringbuf,两个代码行不应该完全相同吗?如果不是,我必须重写哪些其他方法才能获得'\ n'?
c++ - 带有常量的 C++ endl
我只是想让自己熟悉从 Java 迁移而来的 C++ 的基础知识。我刚刚编写了这个功能禁欲程序,遇到了一个错误test.cpp:15: error: expected primary-expression before ‘<<’ token
,我不知道为什么。
有人愿意解释为什么endl
不使用常量吗?代码如下。
c++ - 有谁知道 endl(cout) 和 cout << endl 之间的区别?
我以为它们是一样的,但是当我将代码发送给在线法官(带有endl(cout)
)时,它给了我“错误答案”的判决,然后我尝试发送另一个带有cout << endl
并且法官接受了代码!有谁知道这些命令之间的区别?