Sco*_*ous 2 c++ binary stl copy file
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();
Run Code Online (Sandbox Code Playgroud)
创建的新文件比原始文件的字节数少,文件不匹配
istream_iterator
使用operator>>
,这是以空格分隔的(并且不,以二进制模式打开文件不会更改此行为).请istreambuf_iterator
改用.
istreambuf_iterator<char> in1(ifile), in2;
ostreambuf_iterator<char> out(ofile);
copy(in1, in2, out);
Run Code Online (Sandbox Code Playgroud)
或者,正如ildjarn所提到的,您可以使用更少的输入复制整个文件:
ofile << ifile.rdbuf();
Run Code Online (Sandbox Code Playgroud)