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

c++ - Does Boost.Serialization serialize differently on different platforms?

I use Boost.Serialization to serialize a std::map. The code looks like this

I compiled and tested the code on a Mac Snow Leopard and on Ubuntu Lucid 10.04. There is Boost 1.40 on both systems. On the Mac I built the code myself. On the Ubuntu box I got the binaries via aptitude.

Problem: When I serialize the map on the Mac I can't deserialize it on the Ubuntu box. I get an invalid signature exception if I try.

0 投票
1 回答
2136 浏览

c++ - 使用从 Windows 上的源代码构建的 bzip2 提升 iostreams

最近,我花了一些时间在 Windows 上构建 boost 1.44.0 版本,同时 iostreams 支持 zlib 和 bzip2 压缩过滤器。由于各种原因,决定允许 boost 从源代码构建 zlib 和 bzip2 库。对于它的价值,但我认为这并不重要,我使用的 MSVC 版本是 VC9 (VS2008)。另请注意,从我的肤浅检查来看,这个问题应该适用于在 windows 上针对 bzip2 构建的 iostreams 的任何版本的 boost。

-sZLIB_SOURCE=<PATH>通过指定和干净地构建提升-sBZIP2_SOURCE=<PATH>。但是,我们注意到 boost_iostreams*.dll 库依赖于不存在的 libbz2.dll(而不是 boost_bzip2*.dll)。然而,Boost 确实成功地构建了 boost_bzip2*.dll。请注意,我使用通配符作为所有构建变体信息的占位符。

问题:在某个地方存在对 libbz2.dll 的硬编码依赖项。

0 投票
1 回答
3061 浏览

c++ - 使用 boost iostreams 过滤器(关闭且不可复制)

在询问有关 crypto++的问题后,我尝试使用 boost iostreams 来实现它。我生成了以下代码:


问题编号 1:如果我使 sha_output_filter 不可复制,尽管文档说明“如果 T 是标准流或流缓冲区类型,则通过使用 push 的模板化重载采用非常量引用”,它不起作用。但如果我取消注释行:

然而boost::ref作品。


问题编号 2. 如何关闭流?调试输出为:

0 投票
1 回答
1814 浏览

c++ - 如果我尝试将未压缩的 filtering_istream 复制到 stringstream 则崩溃

我想解压缩文件并将其内容写入字符串流。

这是我试过的代码:

它编译时没有任何警告(当然还有错误),但函数readGZipLog()在运行时崩溃:

./build./test自动编译和启动应用程序的脚本

我检查了文件:它包含一些东西,但我无法使用gunzip. 所以我不确定压缩是否正常工作,以及这是否与gzip errorBoost.

你能告诉我错误在哪里吗?

谢谢你的帮助!

保罗

0 投票
2 回答
386 浏览

c++ - 实现以恒定间隔刷新的缓冲流的标准方法?

我正在模拟来自以给定数据包/秒间隔生成数据包的源的数据包。我想创建一个像ostream对象一样运行的流类,允许operator<<用于通过它输出东西,但需要注意的是,插入的每个值都应该从缓冲区按顺序以指定的时间间隔释放到文件描述符。

因此,例如,我可能有一个带有文件描述符的套接字sockfd并说:

并且输出将被定时以便输出

到插座。我现在正在查看 Boost.Iostreams,这是一个好的解决方案吗?是否有一些我可以用谷歌搜索的神奇短语来描述我不知道的这个问题?

任何帮助,将不胜感激。

谢谢布拉德

0 投票
2 回答
3455 浏览

c++ - 如何使用 boost::iostreams 将 bash 脚本转换为 C++

我正在尝试使用 boost::iostreams 将以下 bash 代码转换为 C++:

我可以打开一个文件并解压缩它:

然后打开一个未压缩的文件:

现在我有点卡住了,所以这是我的问题:

1) 连接两个流的 boost::iostreams 解决方案是什么?

2) 如何通过正则表达式过滤器输出结果以模拟 grep/sed?

因此,我想要一个可以复制到 cout 的 istream:

使用Hamigaki 的 concatenate更新完整的解决方案:

0 投票
2 回答
659 浏览

c++ - 帮助管理 iostream

假设我得到一个字符串缓冲区,其中包含一些必须删除的字符序列:

在那里,必须删除 CRLF 对,所以我测试了一些:

但序列保持相同的长度。所以,我得到以下结果:

我想有一些方法可以做到这一点——而且更优雅——但我找不到方法。

顺便一提。似乎对内部字符串的直接操作不起作用。我说一些类似的东西:

两者都不

或者

不幸的是,我在最初的方法中弄错了

正如我之前提到的,真正的问题与 a 有关,boost::asio::streambuf而我的错误是试图模仿它,将 astd::istream在单独的控制台应用程序中用于测试目的。

当然,使用 asio::streambuf y 不能做一些 as

所以真实的情况是这样的:

我为混乱道歉。

问题保持不变:如何从输入中删除 CRLF -或任何其他字符序列?

0 投票
1 回答
2642 浏览

c++ - 提升 zlib 问题

我在 VS 2010 下的 boost 中的 zlib 库有问题。我构建了这些库,并在 boost/stage/lib 文件夹中生成了适当的 dlls/libs。我将 .dll 添加到我的程序调试文件夹中并链接到了matching.lib。

但是当我实际尝试使用 zlib 流时,我遇到了问题。这是一个例子:

如果我将代码更改为以下内容:

它可以编译,这意味着问题在于压缩字符串的 in.push 和 retString 的副本。难道我做错了什么?我不允许使用这样的字符串吗?

提前致谢

0 投票
2 回答
3567 浏览

c++ - 提升 iostream 问题

我正在尝试使用以下代码在 boost 中解压缩 gzip 字符串

但是,每当我调用此函数时(如下所示)

该程序将始终在此行失败

并生成以下异常

我真的不知道这个...有人有什么建议吗?

谢谢

编辑:

根据建议,我将代码切换为

但是,异常仍然发生,除了它现在发生在副本上

0 投票
1 回答
4662 浏览

iostream - boost::filtering_streambuf with gzip_decompressor(), how to access line by line from file

I wrote a Logparser Application and now I want to implement decompression of .gz files. I tried it with boost::iostreams and zlib which seems to work, but I don't know how to handle the input I get from compressed files.

Here's what I do:

This code is run, if my sourcefile has the .gz ending. The last line outputs the decompressed filestream correctly to cout.

But how can i fetch line by line from the decompressed file? My Program uses getline(input, transfer) to read lines from the input stream, if it's not compressed.

Now I want to read from the decompressed file the same way, but how can I get a new line from in?

The boost decumentation didn't help me much with this.

Thanks in advance!