Используя обычный старый C++:
#include <fstream>
std::ifstream file1("x", ios_base::in | ios_base::binary);
std::ofstream file2("y", ios_base::app | ios_base::binary);
file2 << file1.rdbuf();
подпиточного заголовки утверждают, что copy()
оптимизирован в некоторых случаях , хотя я не уверен, имеет ли это значение следующее:
#include <boost/iostreams/copy.hpp>
// The following four overloads of copy_impl() optimize
// copying in the case that one or both of the two devices
// models Direct (see
// http://www.boost.org/libs/iostreams/doc/index.html?path=4.1.1.4)
boost::iostreams::copy(file1, file2);
обновление:
Функция подталкивания копия совместима с широким разнообразием типов, так что это может быть объединено с предложением Павла Минаева использования std::filebuf
как так:
std::filebuf file1, file2;
file1.open("x", ios_base::in | ios_base::binary);
file2.open("y", ios_base::app | ios_base::binary);
file1.setbuf(NULL, 64 * 1024);
file2.setbuf(NULL, 64 * 1024);
boost::iostreams::copy(file1, file2);
Конечно фактический оптимальный размер буфера зависит от многих переменных, 64k - просто дикая догадка.
Просьба представить более подробную информацию о вашей реализации (STDIO, iostream и т.д.) и требований (бинарных, текст и т.д.) –