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

Langage C++ Discussion :

ifstream ne lis pas les données dans l'ordre.


Sujet :

Langage C++

  1. #1
    Invité
    Invité(e)
    Par défaut ifstream ne lis pas les données dans l'ordre.
    Salut,

    J'ai un petit soucis lors de la lecture de vecteurs dans un fichier.

    Par exemple voici le vecteur que je veux écrire :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<int> ints = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    J'écris et lis les données de cette manière en écrivant la taille du vecteur et ensuite chaque élément du vecteur :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    template <class O>
    void operator() (std::vector<O>& data) {
        unsigned int size = data.size();
        std::cout<<"size : "<<size<<std::endl;
        buffer<<size<<" ";
        for (unsigned int i = 0; i < data.size(); i++)
             (*this)(data[i]);
    }

    Ce qui me donne dans le fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    11 0 1 2 3 4 5 6 7 8 9 10
    Et lors de la lecture je lis la taille du vecteur et les données :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template <class O>
        void operator() (std::vector<O>& objects) {
            unsigned int size;
            buffer>>size;
            std::cout<<"size : "<<size<<std::endl;       
            for (unsigned int i = 0; i < size; i++) {
                O object;
                (*this)(object);
                objects.push_back(object);
            }
        }

    Mais il y a un gros problème, à l'écriture il m'écris bien la taille du vecteur mais à la lecture il m'affiche 8, donc on dirait qu'il me lit l'avant, avant dernière donnée du fichier au lieu de me lire la 1ère donnée comme je m'y attendait.

    Y a t'il un moyen de dire à ifstream de lire les données dans l'ordre ? (entre autre de lire le 1er chiffre d'abord pour récupérer la taille du vecteur)

    J'ai l'impression qu'il lis de manière aléatoire dans la ligne du fichier. (Possède t'il son propre ordre de lecture et d'écriture ?)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bon j'ai initialisé size à 0, et là, il m'indique une taille de 0, donc en fait, il ne me lis rien!

  3. #3
    Invité
    Invité(e)
    Par défaut
    A quel c*n je m'étais trompé dans le nom du fichier lors de l'ouverture du fichier...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    A quel c*n je m'étais trompé dans le nom du fichier lors de l'ouverture du fichier...
    Si tu pouvais faire tes vérifications/tests avant de poster sur le forum ...
    Merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/11/2013, 23h26
  2. Réponses: 2
    Dernier message: 09/12/2011, 10h23
  3. Réponses: 1
    Dernier message: 03/03/2010, 23h31
  4. Réponses: 8
    Dernier message: 10/12/2009, 16h55

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