Что именно вы хотите сделать? Если вам нужна копия данных, вы можете прочитать ее и записать обратно. Если вам действительно нужна копия файла, вы должны использовать вызовы, специфичные для ОС.
Во многих случаях чтение данных файла и последующая запись их в другой файл является достаточно близким приближением к копии - например, так:
ifstream file1(...);
ofstream file2(...);
std::copy(istream_iterator<char>(file1),istream_iterator<char>(),ostream_iterator<char>(file2));
Однако на самом деле это не копия, а создание нового файла с тем же содержимым. Он не будет корректно обрабатывать жесткие ссылки или символические ссылки, он не будет корректно обрабатывать метаданные и будет только «копировать» поток файлов по умолчанию .
Если вам нужна копия файла в Windows, вам следует вызвать один из CopyFile , CopyFileEx или CopyFileTransacted в зависимости от ваших точных требований.