问题标签 [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.
c++ - 流、stream_bufs、codecvt facets 和 \n 到 \r\n 转换
C++ IO 流的哪一部分进行了\r
to\r\n
转换?它是它stream_buf
本身还是它是通过codecvt
方面的内部到外部编码转换的一部分?
更新 1
你们都说是在streambuf/filebuf中完成的。好的。但是这种安排如何处理,例如,像 UTF-16 这样的外部编码?然后似乎必须使用ios::binary
禁用翻译的标志打开文件。
c++ - C++:std::istream 读取及其对 std::streambuf 的调用下溢
以下代码仅测试underflow
在std::istream
read
.std::stringbuf
输出是:
我希望只调用一次下溢,因为我准确地读取了 get 区域中存在的字节数,那么为什么要再次下溢呢?这是预期的行为吗?我之所以问,是因为我的自定义underflow
方法可能会长时间阻塞以读取新数据,因此underflow
在这种情况下,第二次调用并不是很理想。
我在 Osx 上使用clang 3.1和libc++。
谢谢!
更新:
我刚刚做了一个完全独立的测试,在我看来这是libc++实现中的一个奇怪之处,因为libstd++不会发生这种情况。有人可以用其他实现来测试吗?这是一个错误还是只是一个实现差异(对我来说感觉很糟糕)。我更新了上面的代码,因此您可以将其复制并粘贴到任何 main.cpp 中。
更新2:
毕竟这是 libc++ 中的一个错误,请参阅: http://llvm.org/bugs/show_bug.cgi?id= 13113。如果您自己编译 libc++,则该错误应该消失了,我会尽快尝试。
c++ - cout a stringstream 两次以损坏的 cout 结束(最小示例)
我有以下代码,但我不太明白为什么结果恰好如下所示:
输出:
其余的在哪里?¿ 只有当我们取消注释上述行时才会输出它......内部会发生什么?有人知道吗?=) 会很有趣...
c++ - Boost.Asio streambuf:如何在streambuf中复制数据
可能重复:
将流缓冲区的内容复制到字符串
最近我正在研究 boost::asio::streambuf。由于我的英语很差,我无法表达我的意思。所以首先,请看下面的代码。
在#1,数据将从中读取buf
并存储到bdata
。
这会导致存储到的数据bdata
从 中删除buf
。我想从 streambuf 中获取数据,但根本不想更改 streambuf 的内容。
streambuf 有很多数据,我想要的数据位于 streambuf 的开头。
可能吗?谢谢你。
c++ - 通过类在 C++ 中使用 streambuf 读取二进制数据
我是一名 ac 程序员,试图在 C++ 中开始我生命的新阶段(我知道我仍在使用下面的 printf,但那是因为格式化很容易)。我希望从对象的成员函数中打印出数据文件的第一个字节。我认为我的流缓冲区在读取数据之前就被破坏了,但我不知道该怎么做。
我的课程如下所示
我的构造函数打开文件,取出缓冲区,输出第一个字节并返回。(我认为pbuf
在这段代码的末尾会死)。此代码输出First Byte (in constructor): 0x8C
我的读取头正在转储第一个字节,但根据输出,所有看到的是First Byte (in readHeader): 0xFF
我的 main 只是创建了一个解析器并尝试 readHeader
我认为我的问题的解决方案是创建一个new
流缓冲区,但new streambuf(file.rdbuf())
对我不起作用。有什么建议吗?
c++ - boost::asio::streambuf 缩小以适应?
boost::asio::streambuf 的大小将继续增加,直到调用 consume()。
即使调用了consume(),底层缓冲区使用的内存也永远不会被释放。
例如:下面的代码首先创建了一个streambuf,没有指定max_size。然后它将 14Mb 数据转储到 streambuf 中。然后它会消耗所有这些 14MB 数据。在 2000 点,streambuf.size() 为 0,但“top”显示该进程仍占用 14MB 内存。
我不想指定 max_size。无论如何在它为空后缩小streambuf?
c++ - 是否可以制作非 POD 类型的流?
在 C++ 中,我需要使用我自己的std::basic_streambuf<Type>
. 是否需要标准库来按预期构造/销毁对象?
c++ - 使用 istreambuf_iterator 迭代后重新使用字符串流
如果我将 aistreambuf_iterator
周围的包装器传递stringstream
给需要这种迭代器的函数,我如何在函数返回后重新使用(覆盖)流的现有缓冲区,而不触发堆分配?
(clear
插入新字符时似乎会导致重新分配。)
c++ - streambuf 类的哪个成员指向内存中的实际缓冲区?
这个问题与我之前的问题有关。我使用下面的代码来检查与streambuf
关联的对象中的值cout
。使用VS2010 IDE,我可以看到这个类的几个成员。谁能指出我这些成员中的哪一个指向内存中 cout 的空缓冲区?
编辑:查看streambuf
头文件可以在类中找到以下私有成员basic_streambuf
:
我相信_Pfirst
这是我正在寻找的地址,它是 NULL 正如预期的那样。
c++ - 如果 cout.rdbuf() 用于切换缓冲区并且从不将其设置回来,会出现什么问题?
作者在标题下展示了这段代码A bus error on my platform
字符串“Oops!\n”被打印到文件“oops.log”中。代码没有恢复cout的streambuf,但是VS2010没有报运行时错误。