Ниже приведен код. На данный момент все, что я хочу сделать, это прочитать в двоичном файле, а затем записать этот же двоичный файл, чтобы убедиться, что я правильно прочитал и записал [т.е. без изменения файла].
Я использовал test.rar (размер 333 байта - rar'ed txt файл). Выходной файл был 133 КБ и не может быть извлечен с помощью winrar (после переименования в test.rar). Поэтому я, должно быть, делаю что-то не так и не могу найти ошибку.
Кроме того, когда я запускаю прокомментированный код, он выдает «Эта программа не может работать в DOS» и начинает несколько раз издавать звуковые сигналы и повторяться, когда он проходит через мой вектор. Это как если бы cout с этими данными выполнял программу. Если вы знаете, что является причиной этого, было бы неплохо узнать.
#include "Dip.h"
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define USAGE "s\n"
int main(int argc, char **argv)
{
if (argc < 1)
{
cout << USAGE;
return 1;
}
ifstream in(argv[0], ios::binary);
fstream::streampos beg = in.tellg();
in.seekg(0, ios::end);
const fstream::streampos BUFFER_SIZE = in.tellg() - beg;
vector<char> outputBuffer;
if(BUFFER_SIZE)
{
in.seekg(0, ios::beg);
outputBuffer.resize(BUFFER_SIZE);
in.read(&outputBuffer[0], outputBuffer.size());
in.close();
std::ofstream out("output_file", ios::binary);
out.write(&outputBuffer[0], outputBuffer.size());
out.close();
}
else
{
cout << "main::file is empty" << endl;
return 1;
}
//for(vector<char>::const_iterator itr = outputBuffer.begin(); itr !=outputBuffer.end(); ++itr)
//cout << *itr;
// success!
return 0;
}