用自定义源提升Iostreams zlib_error
我正在尝试使用zlib_decompressor通过istreambuf_iterator解压缩数据.我找不到使用输入迭代器作为流的内置方式(如果已经存在的话,请指出一种方式),所以我写了此源: template class IteratorSource { public: typedef cha_type char_type; typedef boost::iostreams::source_tag category; iterator_type& i; iterator_type eof; IteratorSource(iterator_type& it, iterator_type end) : i(it), eof(end) { } std::streamsize read(c
0 2023-12-26
编程技术问答社区
用自定义源提升Iostreams zlib_error
我正在尝试使用zlib_decompressor通过istreambuf_iterator解压缩数据.我找不到使用输入迭代器作为流的内置方式(如果已经存在的话,请指出一种方式),所以我写了此源: template class IteratorSource { public: typedef cha_type char_type; typedef boost::iostreams::source_tag category; iterator_type& i; iterator_type eof; IteratorSource(iterator_type& it, iterator_type end) : i(it), eof(end) { } std::streamsize read(c
2 2023-12-26
编程技术问答社区
冲洗一个 boost::iostreams::zlib_compressor。如何获得一个 "同步刷新"?
获得" zlib sync sync flush" 使用 boost::iostreams::zlib_compressor ?只需在过滤器上调用flush,或在包含filtering_ostream上strict_sync strict_sync都不看(即我希望压缩机都足够冲洗,以使解压缩器能够恢复压缩机消耗的所有字节,远,不关闭流). 查看 解决方案 事实证明,有一个基本问题symmetric_filter zlib_compressor继承本身并非可口 监督). 可能将这种支持添加到symmetric_filter中就像添加flushable_tag并公开现有的私人冲洗方法一样简单,但是现在我可以使用它. 其他解决方案 我是作者的C ++ Zlib包装库,支持齐平功能,可以说更简单地使用: https://github.com/rudi-cilibrasi/zlibrasi/zlibcomcomplete 这很容易: #include
2 2023-12-26
编程技术问答社区
提升IO流和ZLib的速度
我使用Boost iostreams和过滤流缓冲区的Zlib压缩了大量数据文件: boost::iostreams::array_source uncompressedArray( reinterpret_cast( &uncompressedData[0] ), uncompressedData.size() ); boost::iostreams::filtering_streambuf out; out.push( *m_compressor ); out.push( boost::iostreams::char_back_inserter( compressedData ) ); boost::iostreams::copy( uncompressedArray, out ); 为了速度,我正在使用以下来初始化Zlib库: boost::iostreams::zlib_para
12 2023-12-26
编程技术问答社区
如何用Boost解压一个放空数据的向量?
i有一个载体,其中包含Zlib压缩(放气)数据.我想用Boost的filtering_istream对其进行解压缩.他们的网站上只有一个示例,该示例在数据流(而不是我拥有的向量)上运行. vector compressed_buffer; compressed_buffer.resize(cdh.length); file.read(&compressed_buffer[0], cdh.length); filtering_istream in; in.push(zlib_decompressor()); in.push(something(compressed_data)); // what should "something" be? 我也想将未压缩的数据作为向量.我该怎么做? 解决方案 How about an array_source ? in.push(array_source(&*compressed_data.begin(), &*co
0 2023-12-26
编程技术问答社区
提升gzip解压字节数组
我实现了文件的gzip/zlib解压缩,如他们在Boost网站上所示的示例. void CompressionUtils::Inflate(std::ifstream& inputFile, std::ofstream& outputFile) { boost::iostreams::filtering_streambuf in; in.push(boost::iostreams::gzip_decompressor()); in.push(inputFile); boost::iostreams::copy(in, outputFile); } 这很好.我还正在从插座中读取我正在从基于休息的JSON服务中获得的数据,该服务也被压缩.我认为我会写一个基于内存的实现,这是多么困难.好吧,我发现我不理解水流和流缓冲区.我责怪Java的最后几年;).
0 2023-12-26
编程技术问答社区
使用boost::iostreams::mapped_file_source处理宽字符字符串
如果我实例化mapped_file_source(boost 1.46.1)具有狭窄字符串的字符串,如以下内容,我没有问题: boost::iostreams::mapped_file_source m_file_( "testfile.txt" ); 但是,如果我尝试使用宽字符串: boost::iostreams::mapped_file_source m_file_( L"testfile.txt" ); 我在VC2010 SP1中获得以下编译器错误: P:\libs\boost_1_46_1\boost/iostreams/device/mapped_file.hpp(128): error C2248: 'boost::iostreams::detail::path::path' : cannot access private member declared in class 'boost::iostreams::detail::path'
0 2023-11-23
编程技术问答社区
如何在变量模板中声明 "隐式转换"?
我的目的是将数据发送到几个流.通过使用boost :: Tee可能.但是我想编写一个带有variadic模板的包装器,用于使用多个流. 问题是我需要从后代结构到祖先结构的隐式转换.或类似的东西. #include #include #include #include using namespace std; namespace bio = boost::iostreams; using bio::tee_device; using bio::stream; template struct pu; template struct pu:public stream> { typedef
10 2023-11-14
编程技术问答社区
使用boost::iostreams::tee_device?
有人可以帮我吗? 我正在尝试做以下操作: #include #include #include #include namespace io = boost::iostreams; typedef io::stream > Tee; std::stringstream ss1, ss2; Tee my_split(ss1, ss2); // redirects to both streams my_split
14 2023-09-30
编程技术问答社区
如何从std::ifstream读取文件到无符号字符数组?
如此普通我做的事情: std::ifstream stream; int buff_length = 8192; boost::shared_array buffer( new char[buff_length]); stream.open( path.string().c_str(), std::ios_base::binary); while (stream) { stream.read(buffer.get(), buff_length); //boost::asio::write(*socket, boost::asio::buffer(buffer.get(), stream.gcount())); } stream.close(); 我想知道如何阅读unsigned char buffer(boost::shared_array
2 2023-09-29
编程技术问答社区
在Boost.Process 0.5中,如何将程序终止与流结束绑定?
在这个简单的示例中/process0.5/index.html )程序的输出(ls)正在馈送流.该流效果很好,但与期望相反,该流程完成后流并不变得无效(例如流程结束)(类似于Boost.boost.process的先前版本,例如 http://www.highscore.de/boost/process/process/index.html ) 为了使流程的流程退出后,我缺少什么? 自动无效? 也许是我必须在boost.streams file_descriptor的stream? 中设置的选项. #include // version 0.5 from http://www.highscore.de/boost/process0.5/process.zip #include #include
6 2023-06-15
编程技术问答社区
在boostream filtering_ostream中,sync()、strict_sync()和flush()之间有什么区别?
考虑一个简单的计数过滤器: class CountableOstreamFilter : public boost::iostreams::multichar_output_filter { public: CountableOstreamFilter(): m_written(0) { } template std::streamsize write(Sink& dest, const char* s, std::streamsize n) { auto result = boost::iostreams::write(dest, s, n); assert(n == result); m_written += result; return result; } inline std::stre
12 2023-06-05
编程技术问答社区
提升IO流和ZLib的速度
我使用Boost iostreams和过滤流缓冲区的Zlib压缩了大量数据文件: boost::iostreams::array_source uncompressedArray( reinterpret_cast( &uncompressedData[0] ), uncompressedData.size() ); boost::iostreams::filtering_streambuf out; out.push( *m_compressor ); out.push( boost::iostreams::char_back_inserter( compressedData ) ); boost::iostreams::copy( uncompressedArray, out ); 为了速度,我正在使用以下来初始化Zlib库: boost::iostreams::zlib_para
28 2023-05-23
编程技术问答社区
使用boost::iostreams::mapped_file时的内存用量
我在这里粘贴了一些代码,这些代码使用boost iostream进行mmap,然后写入映射文件: typedef unordered_map work; int main() { work d; d[0] = "a"; boost::iostreams::mapped_file_params params; params.path = "map.dat"; params.new_file_size = 1000000000; params.mode = (std::ios_base::out | std::ios_base::in); boost::iostreams::mapped_file mf; mf.open(params);
36 2023-03-07
编程技术问答社区
促进iostreams库的存在,但我无法链接它。
我知道有很多类似的问题,但是我的点点差,没有它们帮助我. 我正在使用boost-iostreams库,这是我的问题,我尝试将我的程序与库链接起来: ld -I/usr/include/boost/iostreams/ -I/usr/include/boost/iostreams/device/ -L/usr/lib/libboost_iostreams.so -lboost-iostreams fd.o -o x 的结果是: ld: cannot find -lboost-iostreams 当我尝试明确编写它时: ld -I/usr/include/boost/iostreams/ -I/usr/include/boost/iostreams/device/ --library /usr/lib/libboost_iostreams.so -lboost-iostreams fd.o -o x 它告诉我图书馆不存在: ld: cannot
18 2023-03-05
编程技术问答社区
谁能提供一个使用boost iostreams寻找、读取和写入一个>4GB文件的例子?
我读过,据说提升iostreams支持了64位访问大型文件的半便携方式.他们的常见问题提到 谢谢. 解决方案 简短答案 只包括 #include 并使用boost::iostreams::seek(device, offset, whence); 其中 device是一个文件,流,溪流或任何可转换为seekable; 的对象 offset是类型的64位偏移 stream_offset ; whence是BOOST_IOS::beg,BOOST_IOS::cur或BOOST_IOS::end. seek的返回值是类型std::streampos,可以使用 position_to_offset function. 示例 这是一个漫长,乏味且重复的示例,它显示了如何打开两个文件,寻求offstet> 4GB并复制它们之间的数据. 警告:此代码将创建非常大的文件(几个GB).在
10 2023-03-03
编程技术问答社区
来自boost::iostreams::copy()的异常情况
在下面的代码中,我有一个损坏的" hello.bz2",它具有超出eof的流浪字符. 在 #include #include #include #include #include int main() { using namespace std; using namespace boost::iostreams; ifstream file("hello.bz2", ios_base::in | ios_base::binary); filtering_streambuf in; in.push(bzip2_decompressor()); in.push(file);
10 2023-03-01
编程技术问答社区
在boost::iostream::filtering_streambuf的编译错误。
只是试图用bzip2压缩字符串,以便我可以通过readfile的管道发送它. 以下行会给我带来以下编译错误. in.push(uncompressed_string); 错误6错误c2027:使用未定义的类型'boost :: static_assertion_failure'c:\ program文件(x86)\ boost \ boost \ boost_1_47 \ boost \ iostreams \ iostreams \ chain.hpp.hpp 488 1 Agent agent boost::iostreams::filtering_streambuf in; ostringstream uncompressed_string; ostringstream compressed_string; uncompressed_string
22 2023-03-01
编程技术问答社区
提升zlib问题
我在VS 2010下的Boost中的ZLIB库有问题.我在Boost/Stage/Lib文件夹中生成了适当的dlls/libs库.我将.dlls添加到我的程序调试文件夹中,并在匹配中链接. ,但是当我实际尝试使用ZLIB流时,我会遇到问题.这是一个例子: #include #include #include #include #include #include std::string DecompressString(const std::string &compressedString) { boost::iostreams::filtering_streambuf
42 2023-03-01
编程技术问答社区