问题标签 [boost-iostreams]

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 投票
2 回答
3672 浏览

c++ - 使用 boost::iostreams::tee_device?

有人能帮我吗?

我正在尝试执行以下操作:

但它不会在 VC9 中编译:

有没有人让这个工作?我知道我可以让自己的班级去做,但我想知道我做错了什么。

谢谢

0 投票
4 回答
11622 浏览

c++ - 简单的服务器/客户端增强示例不起作用

学习boost,并编译了他们的日间服务器客户端示例。由于我不能使用示例中的端口 13,我只更改了服务器和客户端示例中的端口号。服务器运行正常,但客户端似乎没有连接,并且没有给出错误。

客户端的输入数据是“127.0.0.1”。

服务器:

和客户:

0 投票
2 回答
21354 浏览

c++ - C++ "hello world" Boost tee 示例程序

Boost C++ 库有Function Template tee

类模板 tee_filter 和 tee_device 提供了两种拆分输出序列的方法,以便将所有数据同时定向到两个不同的位置。

我正在寻找一个完整的 C++ 示例,使用 Boost tee 输出到标准输出和像“sample.txt”这样的文件。

0 投票
1 回答
1427 浏览

c++ - C++ Boost io 流,错误处理

是否可以使自定义流像标准流一样工作以解决错误?那就是默认使用好/失败/坏/eof位而不是异常?

boost 文档仅提到为流错误抛出 std::failure 并让其他错误传播(例如,尝试分配缓冲区的 badalloc),但是 boost 代码似乎没有捕获这些,而是​​依靠用户代码来处理它们,但是我所有现有的代码都依赖于 good()、bad() 等方法和 clear() 方法,以防出错后需要重试。

0 投票
4 回答
8564 浏览

c++ - 使用 boost::iostreams 提取压缩文件

我正在寻找一种使用 boost::iostreams 类在 c++ 中提取文件的方法。

boost 文档中有一个示例。但它会将压缩文件的内容输出到 std::cout。我正在寻找一种将其提取到文件结构的方法。

有人知道该怎么做吗?

谢谢!

0 投票
1 回答
8261 浏览

c++ - 有人可以提供一个使用 boost iostreams 查找、读取和写入 >4GB 文件的示例吗

我读过 boost iostreams 应该支持 64 位访问大文件的半便携方式。他们的常见问题解答提到了64 位偏移函数,但没有关于如何使用它们的示例。有没有人使用这个库来处理大文件?打开两个文件,寻找它们的中间并将一个复制到另一个的简单示例将非常有帮助。

谢谢。

0 投票
2 回答
8603 浏览

c++ - 如何连接 Boost 序列化和 iostream 以将对象序列化和 gzip 到字符串?

我一直在使用 Boost 序列化库,它实际上非常好,并且让我可以制作简单的包装器来将我的可序列化对象保存为字符串,如下所示:

问题是,我刚刚发现也需要压缩我的序列化数据,所以我正在考虑使用 boost::iostreams 中的过滤器来做到这一点。我想出了如何使用文件成功地做到这一点:

但无法弄清楚如何正确保存到压缩字符串。问题是我没有刷新过滤器链,但我尝试了弹出和同步,但似乎没有任何效果。这是我的损坏代码:

结果,一些数据卡在某处的流缓冲区中,当我知道它应该是 43K 左右时,我总是得到一些完整的压缩数据块(16K 或 32K),因为我得到了(有效)输出使用我的 saveGZFile 方法。显然连接 ofstream 关​​闭并正确刷新,但连接 ostringstream 没有。

有什么帮助吗?(这是我的第一个 stackoverflow 问题——帮帮我,伙计们,你们是我唯一的希望!)

0 投票
1 回答
1381 浏览

c++ - 在使用 boost::asio 和 boost::iostreams 加载异步非阻塞文件时需要帮助(或其他方式?)

我正在用 C++ 编写代码,并且正在尝试异步加载图像文件。经过一番研究,我发现一些关于使用 boost::asio 和 boost::iostreams 来做这件事的提及。但是, boost::asio 的文档和示例主要与套接字相关,因此对我没有多大帮助。

这是我需要的:

  • 异步加载文件并在加载完成后执行回调函数。(在我的例子中,回调函数使用 v8 javascript 引擎执行 javascript 函数对象)
  • 回调函数必须与主函数在同一线程中执行。(因为 v8 不是线程安全的。)
  • 需要在linux和windows上工作。(单独的实现是可以的)

所以,这样的事情会非常好:

该函数不应阻塞,并且在文件加载完成后,它应该运行“the_callback_function”。

编辑:正如 joshperry 指出的那样, boost::asio 可能无法调度回主线程。所以,我想我不必仅限于 boost::asio 和 boost:iostreams。任何可以帮助满足此要求的 c/c++ 库都应该没问题。谢谢!

0 投票
1 回答
1442 浏览

c++ - 为什么 std::istream 不承担对其 streambuf 的所有权?

我正在为 CRI Middleware 的 ROFS 之类的视频游戏编写某种虚拟文件系统库(请参阅Wikipedia)。我使用库的目的是提供访问我开发的游戏资源的自然方式,其中存储了一些嵌入在可执行文件中的数据,一些在媒体上,一些在本地用户的硬盘驱动器上(首选项,保存游戏文件等) .

访问这些资源应该像拨打电话一样简单

实际的做事方式实际上是不同的,另外一个抽象层用于后台加载,但这并不重要。

我想知道的是,考虑到与关联的被销毁时它不会被它删除,我怎么能返回它auto_ptr<>(或者,你选择)。unique_ptr<>std::streambuf<>std::[i/o]stream<>

我正在考虑std::[i/o]stream<>不承担在构造时传递给它的 streambuf 的所有权,因为构造函数不存在所有权语义的转移,并且 Apache 的 STDCXX 参考没有提到所有权的转移(我发现的任何 stdlib 参考也没有在网上)。

我有什么选择?我还不如返回一个共享指针并继续观察它,直到 FSlib 管理器保留共享指针的唯一副本,在这种情况下,它会破坏其唯一副本以及 streambuf。考虑到图书馆的组织模型,这是很实用的,但这不是很优雅,也不是很有效。

我试过看一下 Boost.Iostreams,但对我来说,情况似乎更糟,因为流本身的设备类型与其类型密切相关(流的设备必须在其模板参数中定义)。这个问题似乎使我的库无法使用 Boost.Iostreams,因为它需要抽象出流的具体“源/接收器”实现,以便可以无缝地使用流来打开位于可执行文件本身内部的文件,例如,在系统文件系统的文件中或归档类型文件中。

我可以编写一个容器类来处理这些问题,但我宁愿做得更干净(即已经返回流;这就是它应该需要的全部!;)。

建议?

0 投票
3 回答
454 浏览

c++ - 使用 boost::iostreams 读取特制数据,然后基于该创建对象并将其附加到列表

我有一个有趣的问题。假设我的文件中的行填充如下:

我也有(简化的)课程:

name 对应于某个类构造函数的参数名称。[] 括号中列出的内容是可选的,在 () 中是强制性的,{} 之间的所有内容都应作为字符串传递。

对于第一行,应该以“name1”为名称调用构造函数;3 次调用 addOptionalParam,每个项目用冒号分隔一次;还有 3 次 addMandatoryParam 和 setData 与“文本”。

我可以弄清楚如何发表评论,但其他一切对我来说都被破坏了......

现在我需要一些好的建议如何(或是否)这是可能的,如果我能弄清楚如何为简单的对象做到这一点,我就可以弄清楚如何处理所有额外的血腥细节,比如语义正确性等等。