와 메모리에 gzip으로 압축을 푸는 것은 나는 간단한 수 있습니다 : 나는이 코드 조각이 :압축 함수/부스트
QByteArray MyNBT::decompressData(QByteArray data)
{
filtering_streambuf<input> in;
std::string _data = data.data();
in.push(gzip_decompressor());
in.push(boost::iostreams::back_inserter(_data));
//in.push(std::back_inserter(_data));
std::stringstream _sstream;
boost::iostreams::copy(in, _sstream);
QByteArray out = _sstream.rdbuf()->str().c_str();
return out;
}
을 그리고이 라인 (들)에 오류가 있습니다 :
in.push(boost::iostreams::back_inserter(_data));
//in.push(std::back_inserter(_data));
오류 :
/usr/include/boost/iostreams/chain.hpp:244: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
BOOST_STATIC_ASSERT((is_convertible<category, Mode>::value));
^
컴파일러는 부스트의 하나 한 번 std::back_inserter(_data)
에 두 번이 오류가 발생합니다.
미리 감사드립니다.
는 있지만에서 예외가 발생합니다 런타임'gzip 오류 '. 내가 사용한 gzips는 괜찮습니다. 나는 당신의 코드를 시험해 보았다. gzip은 나를 만든 것이고, 다른 예제는 잘 동작한다. ... – azteca1998
나는 내 코드가 아니라 내 코드를 참조하고 있다고 가정한다. Zip 데이터가 손상되었다고 추측 할 수 있습니다. 어쩌면 당신은 이진 스트림을 사용하거나 길을 따라 어딘가에 NUL 문자를 끝내는 데 실패합니다. – sehe
내 코드가 모든 이진 파일을 문자열로 읽은 다음 일부 함수 (변경하지 않고) 사이에 전달한 다음 압축 된 것으로 표시하면 함수 위의 압축을 풉니 다. 아주 간단합니다. – azteca1998