问题标签 [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 投票
1 回答
476 浏览

c++ - 为什么“gptr”类型是 basic_streambuf char_type* 而不是 const char_type*?

basic_streambuf设置 streambuf 的三个“gptrs”的成员声明setg为:

我想知道:为什么每个 gptr 的类型都是char_type*而不是const char_type*const_cast在这里使用这些 gptrs 使用 const char 指针是否安全?

0 投票
1 回答
847 浏览

c++ - ZeroCopyOutputStream 到一个streambuf

我想编写一个继承自 streambuf 并将ZeroCopyOutputStream (google/protobuf/io/) 改编为 streambuf 的类。

有任何想法吗?

0 投票
5 回答
2348 浏览

c++ - 编译问题 C++

大家好。我需要编译一些项目。我从那里安装了 Visual C++ 6.0 + Microsoft Platform SDK 2003 http://www.microsoft.com/downloads/en/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#requirements

我还在 Tools->Options->Directories 下添加了 SDK 路径并将它们移到顶部。

但是我在编译时仍然遇到这个错误......

c:\users\admin\downloads\microsoft visual c++ 6.0 standard edition\vc98\include\new(9):致命错误 C1083:无法打开包含文件:“异常”:没有这样的文件或目录

c:\users\admin\downloads\microsoft visual c++ 6.0 standard edition\vc98\include\ios(9) : 致命错误 C1083: 无法打开包含文件: 'streambuf': 没有这样的文件或目录

有人有什么想法吗?

0 投票
1 回答
1926 浏览

c++ - 使用 boost::asio::streambuf 的代码会导致段错误

我在使用 asio::streambuf 时遇到了问题,希望有人能告诉我我是否错误地使用了该类。当我运行此示例代码时,它会出现段错误。为什么?

更令人困惑的是,此代码适用于 Windows(Visual Studio 2008),但不适用于 Linux(使用 gcc 4.4.1)。

0 投票
3 回答
214 浏览

c++ - 什么是“别名”流缓冲区?

什么是“别名流缓冲区”?我在对我的答案的评论中遇到了这个词。

0 投票
1 回答
4818 浏览

c++ - 使用 xsputn 和溢出继承 ostream 和 streambuf 问题

我一直在研究如何创建我自己的 ostream 以及一个 streambuf 来处理我的 ostream 的缓冲区。我实际上大部分都在工作,我可以将 (<<) 插入到我的流中并获取字符串没问题。我通过实现虚函数 xsputn 来做到这一点。但是,如果我在流中输入 (<<) 浮点数或整数,而不是字符串 xsputn 永远不会被调用。

我浏览了代码,我看到流正在调用 do_put,然后是 f_put,它最终尝试一次将 float 1 个字符放入缓冲区。如果我的缓冲区没有空间,我可以让它调用我的虚函数溢出(int c)的实现,从而获得浮点数和整数的数据。

现在问题来了,我需要知道何时将浮点数放入缓冲区。或者换一种说法,我需要知道这是最后一次为流入的特定值调用溢出的时间。xsputn 对我有用的原因是因为我预先获得了整个值及其长度。所以我可以将它复制到缓冲区中,然后调用等待缓冲区已满的函数。

诚然,我滥用了 ostream 设计,因为我需要缓存输出,然后为每个输入值 (<<) 一次性发送所有输出。

无论如何要清楚,我将以另一种方式重申我的目标。我很有可能只是走错路了。

我想使用继承的 ostream 和 streambuf,以便我可以向其中输入值并允许它为我处理我的类型转换,然后我想将该信息传送到另一个对象,我将句柄传递给 streambuf 到(为了?)。该对象具有昂贵的 i/o,因此我不想一次发送 1 个字符的数据。

如果不清楚,请提前抱歉。谢谢你的时间。

0 投票
2 回答
757 浏览

c++ - 是否可以“准备”来自 cin 的输入?

他的回答中,特别是在链接的 Ideone 示例中,@Nawaz 展示了如何更改缓冲区对象cout以写入其他内容。这让我想到利用它来准备输入cin,通过填充它streambuf

但这并不像预期的那样工作,或者换句话说,它失败了。:| cin仍然需要用户输入,而不是从提供的streambuf. 有没有办法使这项工作?

0 投票
3 回答
1301 浏览

c++ - 具有多个缓冲区的 std::fstream?

您可以像这样为文件流指定一个缓冲区:

我现在想做的,是使用不止一个缓冲区:

是否可以不创建 std::streambuf 的自定义派生?

编辑: 我想我需要更详细地解释我想要做什么。请考虑以下情况: - 我要读取的文件不适合内存 - 通过某种二进制跳转搜索访问的文件

因此,如果您将文件拆分为特定大小的逻辑页面,那么我想提供多个表示特定页面的缓冲区。当读取文件位置并且相关页面已经在缓冲区中时,这将提高性能。

0 投票
3 回答
719 浏览

c++ - std::istreambuf_iterator 用 std::ifstream “窥视”

在处理数据流时,我更喜欢根据模板和迭代器来编写代码。我经常需要“偷看”下一个角色。为了使代码能够处理非双向迭代器,我有一个如下所示的片段:

显然,这会生成迭代器的副本,递增副本并返回它。这往往工作得很好......除非std::istreambuf_iteratorstd::ifstream. 例如,给定一个test.txt内容为“ ”的文件“ ABCD”,以及以下代码:

输出是:

而不是我所希望的:

换句话说,递增迭代器的一个副本,具有递增所有它们的净效果!

我意识到文件流迭代器的局限性在于它们只能对当前与文件关联的读取缓冲区中的内容进行操作。所以可能没有一个完全符合我想要的解决方案。有没有办法做我想做的事?

0 投票
1 回答
621 浏览

c++ - 将图像缓冲区转换为文件流

之前可能已经问过类似的问题,我找不到我的问题的确切答案,所以决定在这里问。我正在使用一个 3rd 方框架,该框架定义了自己的类来处理图像文件。它只接受文件名,整个实现围绕着能够打开这些文件流并执行读/写。我想输入一个图像缓冲区(我通过对之前打开的图像进行一些预处理获得)并将其提供给这个框架。问题是我无法向它提供缓冲区,只能提供文件名字符串。

我正在寻找将我的缓冲区转换为文件流的最佳方法,以便它可以被框架查找和摄取。请帮我弄清楚我应该看什么。我尝试阅读有关 streambuf(filebuf 和 stringbuf)的信息并尝试将缓冲区分配给这些类型,但到目前为止没有成功。