草庐IT

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

我目前正在尝试实现stringbuf的一个子类,以允许缓冲区对特定字符(在我的例子中为“\n”)进行标记,并在出现此字符时采取措施(将消息转储到记录器并清除缓冲区之后在我的情况下)。为了实现这个目标,我覆盖了sputc(以实现对'\n'的监视)和xsputn(确实使用sputc,因为GCC实现似乎默认情况下不这样做)。出于调试目的,我让sputc将传递给它的每个字符写出到标准输出。现在这是我的问题:如果我使用类似的东西mystreamsputc接收除了应该由std::endl引入的'\n'之外的每个字符,因此预期的操作没有完成,因为'\n'没有传递。如果我使用类似的东西mystream