IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

utilisation de ofstream avec l'algorithme copy


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    12
    2654
    3
    47
    56
    144
    15
    et le fichier copie_liste_chiffre.txt contient.

    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

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 605
    Par défaut
    Bonjour,

    Tout d'abord, fait attention le cours d'Openclassroom a déjà plus de 30 ans. Et à l'époque, il était déjà réputé pour utiliser des choses anciennes ou trop proche du langage C! Le C++ a eu une évolution importante en 2011 et en est à sa version 2026 aujourd'hui. Tu devrais vraisemblablement trouver quelque chose de plus récent.

    Pour choisir son séparateur du ostream_iterator, il faut lire la doc. On voit qu'il suffit de mettre à jour la ligne 52.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ostream_iterator<int> it_dest(fichier_dest , ", "); // pour séparer par des vigules
    ostream_iterator<int> it_dest(fichier_dest, "\n");  // pour mettre des retours à la ligne

  3. #3
    Membre confirmé

    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    Merci dalfab.

    Je suis un mauvais élève car c'était expliqué un peu plus tôt dans le cours.

    C'est vrai qu'il n'y a pas de date pour les cours, mais il me semble quand même qu'il parle de choses récentes.
    Pour commencer, ma foi, c'était déjà bien assez. plus qu'à pratiquer pour me mettre à jour.

    Encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limiter l'algorithme copy avec istream_iterator
    Par tondoudou dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2018, 07h13
  2. Réponses: 5
    Dernier message: 04/04/2007, 09h34
  3. Réponses: 46
    Dernier message: 14/03/2007, 17h47
  4. utilisation de dll avec diverses compilateurs
    Par Thylia dans le forum C++
    Réponses: 30
    Dernier message: 21/10/2004, 16h30
  5. Utiliser Borland C++ avec Emacs sous Windows
    Par Eikichi dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/03/2003, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo