Я написал код для непосредственного чтения сжатого файла .z.
Он отлично работает в Linux и Mac OS. Но это не работает, как ожидалось в Windows.
#include <iostream>
#include <vector>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/zlib.hpp>
// cl /EHsc uncompress.cpp
std::vector<char> & readline(std::istream & stream, std::vector<char> & container) {
char c;
container.clear();
while (stream && stream.get(c)) {
container.push_back(c);
if (c == '\n') break;
}
return container;
}
int main () {
boost::iostreams::filtering_istream in;
boost::iostreams::filtering_istream cinn(std::cin);
in.push(boost::iostreams::zlib_decompressor());
in.push(cinn);
std::vector<char> line;
while (readline(in, line).size() != 0) {
std::string str(line.begin(), line.end());
std::cout << "--" << str ;
}
}
при запуске под ./a.out < compressed.z
на linux или mac работает нормально
при запуске из windows uncompressed.exe < compressed.z
не отображается содержимое файла.
Почему это так?