2
    ifstream ifile("/home/zuma/xps.mp3", ios::binary | ios::in);
    ofstream ofile("/home/zuma/xxx.mp3", ios::binary | ios::out);

    copy(istream_iterator<unsigned char>(ifile), istream_iterator<unsigned char>(), ostream_iterator<unsigned char>(ofile));

    ifile.close();
    ofile.close();

作成された新しいファイルは元のファイルよりもバイト数が少なく、ファイルが一致しません

4

1 に答える 1

5

istream_iteratorを使用しますoperator>>。これは空白で区切られています (ファイルをバイナリ モードで開いても、この動作は変わりません)。istreambuf_iterator代わりに使用してください。

istreambuf_iterator<char> in1(ifile), in2;
ostreambuf_iterator<char> out(ofile);
copy(in1, in2, out);

または、ildjarn が述べたように、より少ない入力でファイル全体をコピーできます。

ofile << ifile.rdbuf();
于 2012-05-04T00:51:14.857 に答える