utilisation de ofstream avec l'algorithme copy
Bonjour.
je fais mes premiers pas sn C++ POO et je suis le cours du même nom sur openclassrooms.
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator> // pour utiliser ostream_iterator
#include <fstream>
using namespace std;
/*---------------------------------*/
class Afficher
/*---------------------------------*/
{
public:
void operator ()(int a) const
{
cout << a << endl;
}
};
/*---------------------------------*/
int main()
/*---------------------------------*/
{
vector<int> tab(100,0);
ifstream fichier ("liste_chiffre.txt");
ofstream fichier_dest ("copie_liste_chiffre.txt");
if (fichier.is_open())
{
// ATTENTION c'est istream pas i*f*stream
istream_iterator<int> it(fichier);
istream_iterator<int> fin;
/*
it = iterateur au debut du fichier
fin = interateur du même type que it.
ne peut être initialisé car la fin du fichier est inconnue.
mais pour quoi ce n'est oas déclaré dans l'algo, je ne comprends pas
tab.deb(), debut du vecateur pour savoir où on va écrire en mémoire
*/
cout<<"appel a copy"<<endl;
copy(it,fin,tab.begin());
cout << "affichage" << endl;
for_each(tab.begin(),tab.end(),Afficher());
if (fichier_dest.is_open())
{
ostream_iterator<int> it_dest(fichier_dest);
copy(tab.begin(),tab.end(),it_dest);
}
}
else
{
cout<<"le fichier n'existe pas."<<endl;
}
return 0;
} |
le fichier Liste_chiffre.txt contient
Code:
1 2 3 4 5 6 7 8
|
12
2654
3
47
56
144
15 |
et le fichier copie_liste_chiffre.txt contient
Code:
1226543475614415000
.
existe-t-il une facon d'écrire un retour à la ligne en utilisant l'algorithme copy ou bien dois-je passer par un parcours classique du vecteur tab avec un for ?
Merci d'avance de votre aide