Этот код компилируется и выполняется. Это просто распечатать содержание
в двоичном формате. Однако результат отличается от того, что я ожидал, а именно:
- Размер выходного файла должен быть намного меньше размера файла, созданного с помощью std :: cout.
- Содержимое выходного файла должно быть сжато, поэтому, когда мы открываем его в редакторе,
мы не должны видеть содержимое.
Но почему приведенный ниже код не работает так, как я надеюсь? Как я могу изменить его соответственно?
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void WriteStr2BinFh(const string& St, ostream &fn)
{
fn.write(St.c_str(), St.length());
}
int main ( int arg_count, char *arg_vec[] ) {
vector <string> Tags;
// In principle we have millions of such tags
// Hence we need to compress it into binary output.
Tags.push_back("0000000000");
Tags.push_back("0000101110");
Tags.push_back("0133030122");
Tags.push_back("0133132033");
Tags.push_back("1002013320");
Tags.push_back("1111111111");
Tags.push_back("1301013133");
Tags.push_back("3010112111");
Tags.push_back("3203012113");
Tags.push_back("3203012212");
//prn_vec<string>(Tags, "\t");
//cout << endl;
ofstream outfile;
outfile.open("MyOut.bin", ios::binary|ios::out);
for (unsigned i=0; i <Tags.size(); i++) {
WriteStr2BinFh(Tags[i]+"\t",outfile);
}
outfile.close();
return 0;
}