问题标签 [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 回答
3799 浏览

c++ - 如何使用 boost::iostreams::file_descriptor_source 读取文件?

我需要在我的应用程序中使用 boost::iostreams::file_descriptor::handle_type。我尝试使用以下代码读取文件,但它一直在 while 循环中循环(in.readsome() 返回 0 )。

using namespace boost::iostreams;

0 投票
1 回答
2896 浏览

c++ - 使用 boost::iostreams 和 zlib 读取 .gz 文件的运行时错误

我正在尝试使用 boost::iostreams 读取 .gz 文件并在屏幕上打印文本内容。这只是一个简单的实验来了解这个库,我使用来自 IMDb (ftp://ftp.fu-berlin.de/pub/misc/movies/database/) 的“directors.list.gz”文件作为我的输入文件。

我的代码通过 MSVC-10 编译,但执行时进程中止。除了错误代码为 R6010 之外,错误消息中没有太多信息。

有人可以就可能导致这种情况的原因以及如何使这项工作指出我的方向吗?

这个库看起来很整洁,我希望能正确使用它。非常感谢您的帮助。

0 投票
1 回答
1782 浏览

c++ - 是否有用于阻塞 boost::asio TCP 连接的 boost::iostreams (双向) 设备?

我正在调查 c++ 库以实现可移植、阻止对文件系统和网络的 I/O 访问。看起来,并且将在他们三个boost::filesystem之间完成这项工作。boost::iostreamsboost::asio

需要明确的是,我目前对 ; 的异步方面不感兴趣boost::asio。我只想要一个可移植的、阻塞的网络接口。

深入研究,我看到boost::iostreams了设备的概念,每个设备都有一个相关的模式概念。双向模式似乎专门为流式访问全双工 TCP 连接量身定制。惊人的。

boost::iostreams似乎不支持实际打开 TCP 连接(与本地文件系统不同)。这很好,肯定boost::asio会让我打开连接,将其适当地建模为双向Device,并将其包装在boost::iostreams::stream.

..除非它不会?我明白boost::asio::ip::tcp::iostream了,这将取代boost::iostreams::stream,但大概不会充当Device.

我理解它的tcp::iostream行为类似,但我仍然更喜欢只针对一个界面而不是两个界面来学习和编码。具体来说,处理两种错误处理机制和异常层次结构并不是很容易接受。

那么问题来了:我是瞎了吗?也许两个库之间存在一个适配器,我错过了谷歌搜索。或者也许有人已经发布了这样的适配器作为我可以加入的第 3 方组件?

0 投票
2 回答
1672 浏览

c++ - 如何在 Boost.Process 0.5 中将程序终止与流结束绑定?

在这个 Boost.Process 0.5 ( http://www.highscore.de/boost/process0.5/index.html ) 的简单示例中,程序 ( ) 的输出ls正在提供一个流。流工作正常,但与预期相反,程序完成后流不会变得无效(例如流结束)(类似于以前版本的 Boost.Process,例如http://www.highscore.de/boost /process/index.html )

is为了使流(在示例中)在子程序退出后自动失效,我缺少什么?

也许这是我必须在 Boost.Streamsstream中设置的选项file_descriptor

0 投票
1 回答
3528 浏览

c++ - 如何将二进制数据写入压缩文件

我有一些用 C++ 处理的财务数据。我以简单的二进制格式存储它,因为它需要更少的资源并且速度很快,但是我想对文件添加压缩。我猜我将受到 IO 限制,因此压缩在处理速度方面不会花费我太多。

我不知道如何进行压缩,因为我是一名学者而不是真正的程序员。我真的可以用一些手握住这个。

我可以将其写入二进制文件,如下所示:

其中 tbin 填充了 TradesBin 数据。

我现在如何向这些文件添加压缩?我只模糊地听说过 ZLO、Bzip2、zlib 和 Boost.IOStreams。非常感谢您的指导和建议!

谢谢!

0 投票
1 回答
1932 浏览

c++ - 使用 bzip 提升 iostream - 未解析的符号

我的项目使用的是带有 bzip2 的 Boost iostreams 的旧版本。我现在正在尝试升级到 Boost 1.51。起初我没有用 bzip 编译,所以很明显我让链接器大喊 libboost_bzip2-vc100-mt-sgd-1_51.lib 丢失。然后我按照这些说明(并添加了静态标志)来编译这个文件。

但是,现在运行链接器会返回一堆缺少的符号:

有什么想法为什么 lib 不包含所有这些代码?我错过了什么?我在 Windows 上使用 VS2010。


编辑:明白了!

有一个旧版本的 libboost_iostreams-vc100-mt-sgd-1_51.lib,它是在没有 bzip 的情况下编译的。我仍然不确定的是:对于我使用的原始编译:

这产生了以下文件:

对于“正确”的编译(解决了问题),我使用了:

即简单地删除了 zlib,因为它对我来说是不必要的。它产生了:

为什么 iostreams 库不是在原始编译中生成的?很奇怪。

谢谢。

0 投票
1 回答
15816 浏览

gdb - 使用 boost::iostreams 时未找到警告消息 RTTI 符号

我使用 Boost::iostreams 同时写入我的控制台和一个文件。当我使用 Eclipse 进行调试时(当然是使用 gdb),我收到一条警告,提示我在 Boost::iostreams 中使用的某个类中找不到 RTTI 符号。

这是重现问题的最少代码。

当我在调试期间越TeeStream cool_cout(my_tee);线时,我收到以下警告:

只要遇到对象cool_cout,就会重复警告。我该如何解决?当然,使用此代码的程序可以工作,我对此没有任何问题。不应忽略警告,并且必须获得一些关于 RTTI 符号的知识。(我无法使用 -f nortti 编译,然后可执行文件抱怨说绝对应该启用 rtti 以使用 iostreams)

0 投票
3 回答
1682 浏览

c++ - boost::iostreams 压缩的字符串长度

我有一个字符串(一些固定长度),我需要对其进行压缩,然后比较压缩后的长度(作为数据冗余的代理或作为 Kolmogorov 复杂度的粗略近似值)。目前,我正在使用 boost::iostreams 进行压缩,这似乎运作良好。但是,我不知道如何获取压缩数据的大小。有人可以帮忙吗?

代码片段是

0 投票
1 回答
732 浏览

c++ - 用于比特流 I/O 的 Boost.Iostreams 与 iostream/streambuf 重载

对于我当前的任务,我需要有可能读/写(主要是基于文件的)比特流。虽然如果用标准 C/C++ 编码,这或多或少是一项微不足道的任务,但我想通过重载和使用标准 STL iostream 或类似方法,使用更通用的方法重写代码,这样我就可以编写类似的东西

但是我不确定要走哪条路:

  1. 使用 Boost.IOStream 或
  2. 直接从 streambuf 或 iostream 派生。

到目前为止,我从来不需要派生/提供自己的流类,但我想提高我的知识......

也许有人可以提供一些指针或提示,更喜欢哪种方式以及为什么!?

谢谢!

0 投票
2 回答
2689 浏览

c++ - boost::iostreams::stream不设置EOF

样本:

在这里,我使用 char 数组初始化 memstream,但 while 循环永远不会结束。问题是什么 ?

编辑:使用流的读取方法按预期工作。使用其他任何东西(包括运算符 >>)都不行