Comment copier des fichiers dans Visual C ++?

J’utilise Visual C ++. Comment copier le contenu de ce fichier dans un autre fichier?

UINT32 writeToLog(wssortingng log) { wfstream file1 (LOG_FILE_NAME, ios_base::out); file1 << log; file1.close(); // want to copy file1 to file2 return 0; } 

Que veux-tu faire exactement? 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 et leur réécriture dans un fichier différent est une approximation suffisamment proche de la copie:

 ifstream file1(...); ofstream file2(...); std::copy(istream_iterator(file1),istream_iterator(),ostream_iterator(file2)); 

Cependant, ce n’est vraiment pas une copie – cela crée un nouveau fichier avec le même contenu. Il ne gérera pas correctement les liens durs ou les liens symboliques, il ne gérera pas correctement les métadonnées et ne copiera que le stream de fichiers par défaut .

Si vous avez besoin d’une copie de fichier sous Windows, vous devez en appeler un CopyFile , CopyFileEx ou CopyFileTransacted selon vos besoins.

La norme C ++ ne comporte aucune fonction de copie de fichiers, à part la lecture du fichier en mémoire et sa réécriture dans un fichier différent. Comme vous utilisez Windows, vous pouvez utiliser la fonction CopyFile – d’autres systèmes d’exploitation ont des fonctions similaires à celles du système d’exploitation.

Le code ci-dessus de Joe Gauterin n’a pas fonctionné pour moi. J’essayais de copier un fichier image .tga, alors peut-être que quelque chose sur istream_iterator foutu. Au lieu de cela j’ai utilisé:

 ifstream file1(...); ofstream file2(...); char ch; while(file1 && file1.get(ch)) { file2.put(ch); }