У меня есть файл txt: gcc-4.7.2.txt: с данными: Hello Это тестовый файл. Спасибо: сжимаются как GCC-4.7.2.tar.bz2как избавиться от лишних значений при использовании boost :: bzip2_decompressor()
Теперь я запускаю следующий код:
#include <sstream>
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
#include <boost/filesystem.hpp>
int main()
{
using namespace std;
using namespace boost::iostreams;
char filename[] = "gcc-4.7.2.tar.bz2";
if (!boost::filesystem::exists(filename))
{
cout << "Can't find " << filename << ". Expect errors to follow! " << endl;
}
ifstream file(filename, ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
filtering_streambuf<output> out;
in.push(bzip2_decompressor());
in.push(file);
try
{
//cout << "in_file:" << in << endl;
boost::iostreams::copy(in, cout);
//boost::iostreams::copy(in, out);
//cout << cout << endl;
//boost::iostreams::copy(in, compressed_string);
//cout << "Copied" << compressed_string << " " << in.str() << endl;
}
catch (const bzip2_error& exception)
{
cout << "catchblock" << endl;
cout << exception.what() << endl;
int error = exception.error();
if (error == bzip2::data_error)
{
cout << "compressed data stream is corrupted";
}
else if (error == bzip2::data_error_magic)
{
cout << "compressed data stream does not begin with the 'magic' sequence 'B' 'Z' 'h'";
}
else if (error == bzip2::config_error)
{
cout << "libbzip2 has been improperly configured for the current platform";
}
else
{
cout << "Error: " << error;
}
cout << endl;
}
}
Во время работы его выход является:
dev4 @ ВС-рабочий стол: ~/readerwriter $ ./test1 gcc-4.7.2.txt0000644000175100001440000000004312547435102011603 0ustar dev4usersHello Это тестовый файл.
Thanks
Каковы символы перед Hello? почему он печатает имя файла?
Как избавиться от этих дополнительных значений. и только печатать содержимое файла:
Hello Это тестовый файл.
Thanks
Не размещать дубликаты http://stackoverflow.com/q/31317488/85371 – sehe
-1 Нет необходимости перепечатывать на вопрос, который уже был дан ответ. – caps
Это не просто дубликат, это плагиат. – Mysticial