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 :

Conversion char/int à la lecture d'un fichier


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Par défaut Conversion char/int à la lecture d'un fichier
    Bonjour,

    J'ai un petit souci provenant de la lecture et enregistrement d'un fichier. En effet, mon programme doit gérer des matrices avec pour méthode de sauvegarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     ofstream of(FileName.c_str());
           of<<taille<<endl;
           for(int i=0;i<taille;i++)
           {
                 for (int j=0;j<taille;j++)
                 {
                          of << mat[i][j] << "\t";
                 }
           }
           of.close();
    Mais mon problème est que quand je recharge, au lieu de pouvoir obtenir des int comme voulu, j'obtiens a priori des char. Quand je veux les passer en int, j'obtiens évidemment la valeur en ASCII et pas la valeur "réelle" (exemple, si j'ai sauvegardé 2, je me retrouve avec 50).

    Voici ma fonction de chargement :

    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
    ifstream f(FileName.c_str());
           if (f)
            {
                    taille=f.get(); //taille est la taille de la matrice
                    for (int i=0;i<taille;i++)
                    {
                            for (int j=0;j<taille;j++)
                            {
                            while (f)
                                    {
                                    mat[i][j]=f.get();
                                    }
                            }
                    }
            f.close();
            }
    J'aimerai donc savoir s'il était possible d'avoir une fonction (peut-etre pas get) qui me permette de stocker dans mat[i][j] directement l'int en question.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    L'équivalent pour la lecture de l'opérateur <<, c'est l'opérateur >> et non la fonction membre get().

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Par défaut
    Certes, mais quand j'enregistre des miliers de chiffres, et que je veux les prendre un à un, il faut bien que j'utilise get, non ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pas si tu mets des tabulations entre chaque chiffre comme tu le fais.

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    il pourrait employer un std::vector< int >
    un input_iterator
    et std::copy.

    Est-ce que je me trompe ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::vector<int> v;
    std::copy(std::input_iterator<int>(in), std::input_iterator<int>(),
    std::back_inserter(v));

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Sauf qu'à mon avis on ne va pas lui faire sortir le vector juste pour pouvoir utiliser cette solution, alors qu'il a un tableau bidimensionnel.

Discussions similaires

  1. conversion char => int
    Par Kruggs dans le forum Informix
    Réponses: 5
    Dernier message: 29/07/2009, 18h41
  2. conversion Char int
    Par TaymouWan dans le forum C#
    Réponses: 2
    Dernier message: 22/05/2009, 19h32
  3. Réponses: 0
    Dernier message: 30/05/2007, 16h12
  4. Conversion Char en int
    Par bob22222 dans le forum C++
    Réponses: 1
    Dernier message: 20/04/2006, 18h59
  5. [C++] Conversion de int en char* ou SetDlgItemText()
    Par lastcheper dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2005, 17h46

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