问题标签 [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.

0 投票
7 回答
14153 浏览

c++ - std::endl 的重载处理?

我想定义一个类MyStream,以便:

给出输出

基本上,我想在前面插入一个“[blah]”,然后在每个非终止 std::endl之后插入?

这里的困难不是逻辑管理,而是检测和重载std::endl. 有没有一种优雅的方式来做到这一点?

谢谢!

编辑:我不需要关于逻辑管理的建议。我需要知道如何检测/重载打印std::endl.

0 投票
2 回答
542 浏览

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 ),现在它的行为符合预期。

我的问题是:如此复杂(而且事实上是错误的)测试背后的基本原理是什么?


为了完整起见:

0 投票
4 回答
4206 浏览

c++ - 重载 operator<< 时将 C++ 流作为参数

我正在尝试编写自己的日志记录类并将其用作流:

这是我开始的代码:

但是我在尝试编译时遇到错误,说没有 operator<< 的定义(使用 std::endl 时):

所以,我一直试图重载 operator<< 来接受这种流,但这让我发疯。我不知道该怎么做。例如,我一直在查看 ostream 头文件中 std::endl 的定义,并使用此头文件编写了一个函数:

但没有运气。我尝试过使用模板而不是直接使用 char,也尝试过简单地使用“const ostream& os”,但什么也没有。

让我烦恼的另一件事是,在错误输出中, operator<< 的第一个参数发生了变化,有时它是对指针的引用,有时看起来像双重引用......

0 投票
1 回答
388 浏览

c++ - 自定义流刷新类型

关于流和东西的问题,我有多个问题,但经过一番思考,我得出的结论是,我所需要的只是一个自定义刷新类型。我希望我的流在换行时刷新。它省去了输入 std::endl 的麻烦。有可能实现这一点吗?我正在使用带有自定义 stringbuf 的 ostream。

0 投票
1 回答
22513 浏览

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?

0 投票
1 回答
1798 浏览

c++ - XCode 4 仅显示带有 endl 的 cout 语句

我的 cout 语句有一个非常奇怪的问题。我只用 XCode 4 试过这个。例如,如果我写,

我在调试器控制台中看到了所有三个输出语句。但是,如果我将顺序更改为,

我只看到前两个 couts。更奇怪的是,如果我将代码更改为,

我看到所有三个陈述。

当我改变它的位置时,为什么我看不到“这不是” cout 声明?

0 投票
1 回答
10787 浏览

c++ - 什么是 C++ iostream endl 惨败?

我正在听Andrei Alexandrescu 关于 D 编程语言的谷歌演讲,当时他发表了一篇关于“endl”惨败的文章。我只是认为 endl 是表示行尾并刷新流缓冲区的首选方式。为什么它被认为是惨败?我不应该在我的代码中使用它吗?

0 投票
1 回答
334 浏览

c++ - 流缓冲区实现的 std::endl 和 '\n' 之间的差异

我目前正在尝试实现 stringbuf 的子类,以允许缓冲区标记特定字符(在我的情况下为“\n”)并在发生此字符时采取行动(将消息转储到记录器并随后在我的案子)。为了实现这个目标,我覆盖了 sputc (以实现监视 '\n')和 xsputn (确实使用 sputc,因为默认情况下 GCC 实现似乎不这样做)。出于调试目的,我让 sputc 将传递给它的每个字符写出到 stdout。

现在这是我的问题:如果我使用类似的东西

sputc 接收除应由 std::endl 引入的 '\n' 之外的每个字符,因此未完成预期的操作,因为未传递 '\n'。如果我使用类似的东西

甚至

一切都按预期工作,我的 sputc 实现得到了 '\n' 字符。

所以我的问题是:对于后面的stringbuf,两个代码行不应该完全相同吗?如果不是,我必须重写哪些其他方法才能获得'\ n'?

0 投票
8 回答
397 浏览

c++ - 带有常量的 C++ endl

我只是想让自己熟悉从 Java 迁移而来的 C++ 的基础知识。我刚刚编写了这个功能禁欲程序,遇到了一个错误test.cpp:15: error: expected primary-expression before ‘&lt;<’ token,我不知道为什么。

有人愿意解释为什么endl不使用常量吗?代码如下。

0 投票
4 回答
332 浏览

c++ - 有谁知道 endl(cout) 和 cout << endl 之间的区别?

我以为它们是一样的,但是当我将代码发送给在线法官(带有endl(cout))时,它给了我“错误答案”的判决,然后我尝试发送另一个带有cout << endl并且法官接受了代码!有谁知道这些命令之间的区别?