Taz a écrit :
moi j'aime bien
Code :
- #include <cstdlib>
- #include <iostream>
- #include <fstream>
- int main(int argc, char *argv[])
- {
- if (argc != 3)
- return 0;
- // en binaire pour certains systèmes
- std::ifstream in(argv[1], std::ios::binary);
- std::ofstream out(argv[2], std::ios::binary);
- if(!in or !out)
- return 0;
- out << in.rdbuf();
- // être sur que tout est terminé avant la suppression
- out.close();
- std::remove(argv[2]);
- }
|
|
C'est sûr que c'est joli sauf que c'est nul (t'as appris le C++ sur une calculatrice ou quoi ?)
Déjà, les performances de ton machin dépendent de l'implementation de la stl. Avec celle fournie par le VC de krosoft, là, tu fais une copie octet par octet. Over top ridicule.
Ensuite, en imaginant que tu prennes une implémentation un peu plus sérieuse, il faut savoir que la plupart utilisent un buffer de 8Ko. En programmant soit-même une boucle avec un buffer de 64 Ko, tu vas réduire le temps d'exécution de ta copie d'un rapport de 1/3 à 1/2 sur un fichier un tant soit peu conséquent.
Pour finir, j'ai bien aimé le gros bug dans ton exemple : pas de test d'erreur pour savoir si l'écriture s'est correctement déroulée.
Si pour une raison x ou y, une erreur survient, on tombe tout droit dans le remove sans avoir réalisé de copie correcte du fichier d'origine.
Moralité : on perd ses données.