Que voulez-vous exactement faire? Si vous avez besoin d'une copie des données, vous pouvez les lire et les réécrire. Si vous avez vraiment besoin d'une copie du fichier, vous devez utiliser des appels spécifiques au système d'exploitation.
Dans de nombreux cas, la lecture des données de fichier, puis écrire à nouveau dans un autre fichier est une approximation assez proche d'une copie - comme ceci:
ifstream file1(...);
ofstream file2(...);
std::copy(istream_iterator<char>(file1),istream_iterator<char>(),ostream_iterator<char>(file2));
Quoi qu'il en est vraiment pas une copie - Il crée un nouveau fichier avec le même contenu. Il ne gérera pas correctement les liens physiques ou les liens symboliques, il ne gérera pas correctement les métadonnées et ne "copiera" que le default file stream.
Si vous avez besoin d'une copie de fichier sur Windows, vous devez appeler l'un des CopyFile, CopyFileEx ou CopyFileTransacted en fonction de vos besoins exacts.
J'aime la distinction entre copier le fichier et copier les données. C'est quelque chose que je connais depuis des années, mais je ne l'ai jamais vu aussi clairement. Bon travail! –
Le code ci-dessus n'a pas fonctionné pour moi. Voir ma réponse ci-dessous ... –