Я пытаюсь использовать boost :: iostreams (1.53.0), чтобы распаковать тело запроса HTTP, а затем обработать его. Но я получаю сбой, когда запускаю следующий код.Сбой при использовании boost :: iostreams
try {
using namespace boost::iostreams;
ifstream file(argv[1], std::ios_base::in | std::ios_base::binary);
boost::iostreams::filtering_istream in;
in.push(gzip_decompressor());
in.push(file);
std::stringstream strstream;
boost::iostreams::copy(in, strstream);
} catch (std::exception& e) {
cout << e.what() << endl;
}
Катастрофа происходит в gzip_decompressor()
, более конкретно в gzip_header() { reset(); }
от gzip.hpp BOOST (в глядя на стек вызовов).
Я скомпилировал библиотеку boost :: iostreams, а также попытался использовать boost из macports, но происходит тот же самый сбой. Я также попытался использовать gzstream library, но это также сбой в конструкторе, а точнее в конструкторе igzstream
.
Я склонен полагать, что это проблема, связанная с zlib. Я не уточнил, я использую MacBook Pro с Mountain Lion и xCode 4.6 для создания и запуска кода.
Перед вами возникла такая проблема?
Можете ли вы приложить отладчик и отправить трассировку стека аварии? –
Вы подтвердили, что argv [1] фактически указывает на файл? – Zac
@Zac Сбой gzip_decompressor() не имеет ничего общего с поставляемым argv. Тем не менее, он указывает на правильный путь к файлу. – afp