以下是代码。现在,我想做的就是读取二进制文件,然后写相同的二进制文件,以确保我正确地读取和写入[即不改变文件]。
我使用了test.rar(大小为333字节 - 一个rar'ed txt文件)。输出文件为133kb,无法使用winrar进行提取(在重命名为test.rar之后)。所以我一定做错了,找不到错误。
此外,当我让评论的代码运行时,它会输出“此程序无法在dos中运行”并在迭代我的向量时重复开始发出蜂鸣声和boops。这就好像使用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;
}