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 :

Lecture et écriture d'un fichier texte


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Lecture et écriture d'un fichier texte
    Bonjour, ces derniers temps j'ai beaucoup fait de sujet je sais ^^
    Je m'explique, c'est mon dernier jour de projet, je dois le rendre demain midi, je suis dans le c*** comme c'est pas permis et on a aucune aide !
    Enfin bref, voici mon problème, j'ai un code en C++, bien comme il faut et tout, la seule chose c'est que je dois le passer en SDL (je sais il y a un forum, mais il est mort).
    Et me voilà bien bloquée !! Je précise que je suis débutante et que je suis dans une grosse galère comme c'est pas permis là...
    Enfin bref, voici mon code :

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
    #include "score.h"
    #include <string>
     
    using namespace std;
     
    int main()
    {
        score a;
        a.ecrire_score();
        a.affiche_score();
     
        return 0;
    }


    score.h
    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
    #ifndef SCORE_H
    #define SCORE_H
    #include <string>
     
    class score
        {
            private:
            std::string pseudo;
            std::string ligne;
            int points;
     
            public:
            score();
            void ecrire_score();
            void affiche_score();
        };
     
    #endif

    score.cpp
    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
    #include "score.h"
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    score::score()
        {
        }
     
    void score::ecrire_score()
        {
            ofstream fichier("test.txt", ios::app); //Ouvre le fichier texte et permet d'écrire à la suite (ios::app)
            if(fichier)//Si le fichier existe
            {
                    cin >> pseudo;
                    cin >> points;
                    fichier << pseudo << " " << points << endl;
                    fichier.close();//On doit toujours fermer le fichier
            }
            else
                    cerr << "Impossible d'ouvrir le fichier !" << endl;
     
        }
     
    void score::affiche_score()
        {
            ifstream fichier("test.txt", ios::in); //Constructeur d'initialisation qui ouvre le fichier en lecture
            if(fichier) //Si l'ouverture a fonctionné
                {
                    while(getline(fichier, ligne))  //Tant que l'on peut mettre la ligne dans "contenu"
                        {
                            cout << ligne << endl;  //On l'affiche
                        }
                }
            else
                    cerr << "Impossible d'ouvrir le fichier" << endl; //cerr est la sortie standard des erreurs
        }


    So, please... Help me !!!

  2. #2
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Arf, apparemment le truc est en console et il faut le passer en SDL, donc il faudra en SDL avoir un sorte d'interface utilisateur (pour remplacer cin>> de la console, récupérer ce que l'utilisateur tape).

    Pendant que ce serait cool si quelqu'un pond ça tout cuit pour toi demain midi, ce aurait été génial si toi tu aurait fait un effort.

    Au cas où personne mettra le code pour toi, viedemerde.fr existe

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Tu es bien le premier à comprendre ce qu'il me faut sur tous les différents forums sur lesquels j'ai posté ^^

    Mais je vois pas le rapport avec les efforts que j'ai fourni, je n'ai pas fait que ça sur tout le projet, c'est juste cette petite partie là qui me pose problème ^^

    Bon demain matin, mode codeuse folle ^^

  4. #4
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Je n'ai plus vu SDL de près depuis longtemps, mais je pense que ça devrait être ça :

    Pour récupérer les lettres/touches qui auraient été écrites sur le clavier dans un std::string, c'est avec :
    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
    SDL_EnableUNICODE( 1 );
    SDL_Event event;
    string characteres;
    while (SDL_PollEvent(&event))
    {
      switch(event.type)
      {
        case SDL_KEYDOWN:
        {
             characteres = event.key.keysym.unicode;
     
             break;
        }
      }
    }

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Une petite remarque, juste en passant, concernant la partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            if(fichier)//Si le fichier existe
            {
                    cin >> pseudo;
                    cin >> points;
                    fichier << pseudo << " " << points << endl;
                    fichier.close();//On doit toujours fermer le fichier
            }
    et surtout le commentaire...

    En fait, non, on ne doit pas toujours fermer le fichier...

    En effet, les classes *fstream (car on peut parler aussi bien des ifstream que des ofstream), comme toutes les classes fournies par le strandad d'ailleurs, appliquent l'idiome RAII (Ressource Acquisition Is Initialisation) et son pendant que l'on pourrait nommer RDIR (Ressource Destruction Is Releasing).

    Ainsi, il se fait que, lorsqu'un *fstream est détruit, le fichier sur lequel il agit est automatiquement fermé (tout comme il est automatiquement ouvert lorsque tu utilise un des constructeurs prenant le nom de fichier comme premier paramètre)

    Comme la variable fichier est déclarée dans la fonction ecrire_score, elle n'existe que... durant la durée de l'exécution de cette fonction, et est donc détruite lorsque l'on atteint l'accolade fermante du "scope" dans lequel elle est déclarée, ce qui implique... la fermeture du ficher

    C'est sympa, le C++, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. lecture / écriture dans des fichiers text
    Par nadir CoCo dans le forum C++
    Réponses: 6
    Dernier message: 28/06/2012, 09h10
  2. lecture-écriture dans un fichier text
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 29/07/2010, 20h28
  3. Lecture et écriture d'un fichier texte
    Par 0nn2belle dans le forum SDL
    Réponses: 1
    Dernier message: 11/02/2010, 21h59
  4. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  5. Réponses: 4
    Dernier message: 02/05/2007, 10h41

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