我正在尝试使用 boost::iostreams 读取 .gz 文件并在屏幕上打印文本内容。这只是一个简单的实验来了解这个库,我使用来自 IMDb (ftp://ftp.fu-berlin.de/pub/misc/movies/database/) 的“directors.list.gz”文件作为我的输入文件。
我的代码通过 MSVC-10 编译,但执行时进程中止。除了错误代码为 R6010 之外,错误消息中没有太多信息。
有人可以就可能导致这种情况的原因以及如何使这项工作指出我的方向吗?
这个库看起来很整洁,我希望能正确使用它。非常感谢您的帮助。
#include <fstream> // isalpha
#include <iostream> // EOF
#include <boost/iostreams/categories.hpp> // input_filter_tag
#include <boost/iostreams/operations.hpp> // get
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/filter/zlib.hpp>
using namespace std;
namespace io = boost::iostreams;
int main()
{
if(true)
{
string infile_path = "c:\\Temp\\directors.list.gz";
ifstream infile(infile_path, ios_base::in | ios_base::binary);
io::filtering_streambuf<io::input> in; //filter
in.push(io::zlib_decompressor());
in.push(infile);
//output to cout
io::copy(in, cout);
}
return 0;
}