Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur lecture fichier avec ifstream

    4 juillet 2007 à 12:48:52

    Bonjour les gens
    Je ne parviens pas à lire un nombre dans un fichier pour mon constrcuteur de ma classe Options.

    Voilà un code qui fonction avec une console.
    #include <iostream>
    #include <string>
    #include <fstream>

    using namespace std;

    int main()
    {
            ifstream fichier("test.txt");
            if(fichier)
            {
                    int entier1, entier2;
                    string chaine1, chaine2;

                    while(chaine1 != "OPTIONS")
                        fichier >> chaine1;

                    fichier >> chaine1 >> entier1 >> chaine2 >> entier2;
                    cerr << entier1 << " " << entier2 << " " << chaine1 << " " << chaine2 << endl;
            }
            else
                cerr << "Impossible d'ouvrir le fichier !" << endl;

            fichier.close();
    }


    L'autre est quasiment le même dans mon programme:

    #include "Main.hpp"
    #include "Options.hpp"


        /*******   CLASS OPTIONS   *******/


    Options::Options (string adresse)
    {
        ifstream fichier("test.txt");
        if(fichier)
        {
                int entier1, entier2;
                string chaine1, chaine2;

                while(chaine1 != "OPTIONS")
                    fichier >> chaine1;

                fichier >> chaine1 >> entier1 >> chaine2 >> entier2;
                cerr << entier1 << " " << entier2 << " " << chaine1 << " " << chaine2 << endl;
        }
        else
            cerr << "Impossible d'ouvrir le fichier !" << endl;

        fichier.close();
    }
     

    Mais les variables int n'arrivent à etre lues, dans mon main, le programme plante alors à cette ligne :


    #include "Main.hpp"
    #include "Fonctions.hpp"
    #include "Surface.hpp"
    #include "Options.hpp"


    int main (int argc, char *argv[])
    {

            /*****   INITIALISATIONS   *****/

        initialiser(argv[0]);   // Initialisation du programme et des librairies
        Fenetre ecran;          // Création de la fenêtre

        /*** ICI le programme s'arrête ***/
        Options options;

        return EXIT_SUCCESS;
    }


    Par contre si je remplace dans mon constructeur les variables entier1 et entier2 par des string comme ça :
    string entier1, entier2;

    Le programme fonctionne quand même mais je veux des variables int.

    Voici le contenu du fichier "test.txt" lu:
    OPTIONS

    fenetreL 950
    fenetreH 600
    fenetreX 80
    fenetreY 80
    fenetreC 0


    Comment faire pour que ca fonctionne avec des int ? Pour que les int soient lus sans erreurs ?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      4 juillet 2007 à 13:06:01

      Salut,

      si tes chaines contienne des int, t'a qu'a convertir le string en int :


      #include <sstream>
      using namespace std;

      istringstream iss(chaine);
      iss >> entier;
       


      ce code te convertit chaine (qui doit contenir un entier) en un int qui à la valeur de l'entier contenu dans la chaine (c'est compréhensible ce que je dit ? o_O On va dire que oui !)

      Xav57
      en remplacant chaine
      • Partager sur Facebook
      • Partager sur Twitter
        4 juillet 2007 à 13:40:38

        Merci beaucoup mais apparement cette ligne ne marche pas non plus:

        iss >> entier;


        On dirait que mon programme n'arrive pas à traiter les int dans les flux:
        J'ai essayé dans un programme en console de copier ma classe et de créer un objet et celà marche parfaitement. Mais ce même code (identique au caracrtère près) ne marche pas dans mon prgramme SDL.
        Je ne vois pas pourquoi. :o .
        • Partager sur Facebook
        • Partager sur Twitter
          5 juillet 2007 à 1:08:51

          Toujours tester le résultat d'une lecture susceptible de foirer -- je ne cherche même pas dans ton code du coup.
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

          Erreur lecture fichier avec ifstream

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown