Decompressing a file using boost
I want to decompress a file using boost that has been compressed using bzip2
I tried the following which leads to an error I can not explain
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(input);
in.push(boost::iostreams::bzip2_decompressor());
boost::iostreams::copy(in,myStream);
return myStream;
}
I used c++17, boost 1.58 and gcc 8.0 to compile the code above
and get the following error :
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorstd::logic_error >'
what(): chain complete
Would appreciate any help/tips on how to solve this
c++ boost decompression bzip2
add a comment |
I want to decompress a file using boost that has been compressed using bzip2
I tried the following which leads to an error I can not explain
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(input);
in.push(boost::iostreams::bzip2_decompressor());
boost::iostreams::copy(in,myStream);
return myStream;
}
I used c++17, boost 1.58 and gcc 8.0 to compile the code above
and get the following error :
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorstd::logic_error >'
what(): chain complete
Would appreciate any help/tips on how to solve this
c++ boost decompression bzip2
add a comment |
I want to decompress a file using boost that has been compressed using bzip2
I tried the following which leads to an error I can not explain
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(input);
in.push(boost::iostreams::bzip2_decompressor());
boost::iostreams::copy(in,myStream);
return myStream;
}
I used c++17, boost 1.58 and gcc 8.0 to compile the code above
and get the following error :
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorstd::logic_error >'
what(): chain complete
Would appreciate any help/tips on how to solve this
c++ boost decompression bzip2
I want to decompress a file using boost that has been compressed using bzip2
I tried the following which leads to an error I can not explain
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(input);
in.push(boost::iostreams::bzip2_decompressor());
boost::iostreams::copy(in,myStream);
return myStream;
}
I used c++17, boost 1.58 and gcc 8.0 to compile the code above
and get the following error :
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorstd::logic_error >'
what(): chain complete
Would appreciate any help/tips on how to solve this
c++ boost decompression bzip2
c++ boost decompression bzip2
edited Nov 24 '18 at 19:18
XPenguen
asked Nov 24 '18 at 19:06
XPenguenXPenguen
1197
1197
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The device needs to be the last item you push into the filtering_streambuf, after you have pushed a device you aren't allowed to push anything else which is why you are getting the error. See https://www.boost.org/doc/libs/1_68_0/libs/iostreams/doc/classes/filtering_streambuf.html#policy_push
Your code should be:
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(boost::iostreams::bzip2_decompressor());
in.push(input);
boost::iostreams::copy(in,myStream);
return myStream;
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53461495%2fdecompressing-a-file-using-boost%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The device needs to be the last item you push into the filtering_streambuf, after you have pushed a device you aren't allowed to push anything else which is why you are getting the error. See https://www.boost.org/doc/libs/1_68_0/libs/iostreams/doc/classes/filtering_streambuf.html#policy_push
Your code should be:
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(boost::iostreams::bzip2_decompressor());
in.push(input);
boost::iostreams::copy(in,myStream);
return myStream;
}
add a comment |
The device needs to be the last item you push into the filtering_streambuf, after you have pushed a device you aren't allowed to push anything else which is why you are getting the error. See https://www.boost.org/doc/libs/1_68_0/libs/iostreams/doc/classes/filtering_streambuf.html#policy_push
Your code should be:
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(boost::iostreams::bzip2_decompressor());
in.push(input);
boost::iostreams::copy(in,myStream);
return myStream;
}
add a comment |
The device needs to be the last item you push into the filtering_streambuf, after you have pushed a device you aren't allowed to push anything else which is why you are getting the error. See https://www.boost.org/doc/libs/1_68_0/libs/iostreams/doc/classes/filtering_streambuf.html#policy_push
Your code should be:
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(boost::iostreams::bzip2_decompressor());
in.push(input);
boost::iostreams::copy(in,myStream);
return myStream;
}
The device needs to be the last item you push into the filtering_streambuf, after you have pushed a device you aren't allowed to push anything else which is why you are getting the error. See https://www.boost.org/doc/libs/1_68_0/libs/iostreams/doc/classes/filtering_streambuf.html#policy_push
Your code should be:
std::stringstream readData(const std::string path) {
std::stringstream myStream;
std::ifstream input(path,std::ios_base::in);
boost::iostreams::filtering_streambuf<boost::iostreams::input>in;
in.push(boost::iostreams::bzip2_decompressor());
in.push(input);
boost::iostreams::copy(in,myStream);
return myStream;
}
answered Nov 24 '18 at 19:39
Alan BirtlesAlan Birtles
9,12611034
9,12611034
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53461495%2fdecompressing-a-file-using-boost%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown