问题标签 [streambuf]

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 投票
3 回答
571 浏览

c++ - 流、stream_bufs、codecvt facets 和 \n 到 \r\n 转换

C++ IO 流的哪一部分进行了\rto\r\n转换?它是它stream_buf本身还是它是通过codecvt方面的内部到外部编码转换的一部分?

更新 1

你们都说是在streambuf/filebuf中完成的。好的。但是这种安排如何处理,例如,像 UTF-16 这样的外部编码?然后似乎必须使用ios::binary禁用翻译的标志打开文件。

0 投票
1 回答
2028 浏览

c++ - C++:std::istream 读取及其对 std::streambuf 的调用下溢

以下代码仅测试underflowstd::istream read.std::stringbuf

输出是:

我希望只调用一次下溢,因为我准确地读取了 get 区域中存在的字节数,那么为什么要再次下溢呢?这是预期的行为吗?我之所以问,是因为我的自定义underflow方法可能会长时间阻塞以读取新数据,因此underflow在这种情况下,第二次调用并不是很理想。

我在 Osx 上使用clang 3.1libc++

谢谢!

更新:

我刚刚做了一个完全独立的测试,在我看来这是libc++实现中的一个奇怪之处,因为libstd++不会发生这种情况。有人可以用其他实现来测试吗?这是一个错误还是只是一个实现差异(对我来说感觉很糟糕)。我更新了上面的代码,因此您可以将其复制并粘贴到任何 main.cpp 中。

更新2:

毕竟这是 libc++ 中的一个错误,请参阅: http://llvm.org/bugs/show_bug.cgi?id= 13113。如果您自己编译 libc++,则该错误应该消失了,我会尽快尝试。

0 投票
1 回答
545 浏览

c++ - cout a stringstream 两次以损坏的 cout 结束(最小示例)

我有以下代码,但我不太明白为什么结果恰好如下所示:

输出:

其余的在哪里?¿ 只有当我们取消注释上述行时才会输出它......内部会发生什么?有人知道吗?=) 会很有趣...

0 投票
0 回答
464 浏览

c++ - Boost.Asio streambuf:如何在streambuf中复制数据

可能重复:
将流缓冲区的内容复制到字符串

最近我正在研究 boost::asio::streambuf。由于我的英语很差,我无法表达我的意思。所以首先,请看下面的代码。

在#1,数据将从中读取buf并存储到bdata

这会导致存储到的数据bdata从 中删除buf。我想从 streambuf 中获取数据,但根本不想更改 streambuf 的内容。

streambuf 有很多数据,我想要的数据位于 streambuf 的开头。

可能吗?谢谢你。

0 投票
2 回答
2490 浏览

c++ - 通过类在 C++ 中使用 streambuf 读取二进制数据

我是一名 ac 程序员,试图在 C++ 中开始我生命的新阶段(我知道我仍在使用下面的 printf,但那是因为格式化很容易)。我希望从对象的成员函数中打印出数据文件的第一个字节。我认为我的流缓冲区在读取数据之前就被破坏了,但我不知道该怎么做。

我的课程如下所示

我的构造函数打开文件,取出缓冲区,输出第一个字节并返回。(我认为pbuf在这段代码的末尾会死)。此代码输出First Byte (in constructor): 0x8C

我的读取头正在转储第一个字节,但根据输出,所有看到的是First Byte (in readHeader): 0xFF

我的 main 只是创建了一个解析器并尝试 readHeader

我认为我的问题的解决方案是创建一个new流缓冲区,但new streambuf(file.rdbuf())对我不起作用。有什么建议吗?

0 投票
1 回答
1003 浏览

c++ - boost::asio::streambuf 缩小以适应?

boost::asio::streambuf 的大小将继续增加,直到调用 consume()。
即使调用了consume(),底层缓冲区使用的内存也永远不会被释放。

例如:下面的代码首先创建了一个streambuf,没有指定max_size。然后它将 14Mb 数据转储到 streambuf 中。然后它会消耗所有这些 14MB 数据。在 2000 点,streambuf.size() 为 0,但“top”显示该进程仍占用 14MB 内存。

我不想指定 max_size。无论如何在它为空后缩小streambuf?

0 投票
1 回答
151 浏览

c++ - 是否可以制作非 POD 类型的流?

在 C++ 中,我需要使用我自己的std::basic_streambuf<Type>. 是否需要标准库来按预期构造/销毁对象?

0 投票
0 回答
267 浏览

c++ - 使用 istreambuf_iterator 迭代后重新使用字符串流

如果我将 aistreambuf_iterator周围的包装器传递stringstream给需要这种迭代器的函数,我如何在函数返回后重新使用(覆盖)流的现有缓冲区,而不触发堆分配?
clear插入新字符时似乎会导致重新分配。)

0 投票
0 回答
350 浏览

c++ - streambuf 类的哪个成员指向内存中的实际缓冲区?

这个问题与我之前的问题有关。我使用下面的代码来检查与streambuf关联的对象中的值cout。使用VS2010 IDE,我可以看到这个类的几个成员。谁能指出我这些成员中的哪一个指向内存中 cout 的空缓冲区?

编辑:查看streambuf头文件可以在类中找到以下私有成员basic_streambuf

我相信_Pfirst这是我正在寻找的地址,它是 NULL 正如预期的那样。

0 投票
3 回答
2025 浏览

c++ - 如果 cout.rdbuf() 用于切换缓冲区并且从不将其设置回来,会出现什么问题?

作者在标题下展示了这段代码A bus error on my platform

字符串“Oops!\n”被打印到文件“oops.log”中。代码没有恢复cout的streambuf,但是VS2010没有报运行时错误。