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'une ligne dans un ficher


Sujet :

C++

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut Lecture et écriture d'une ligne dans un ficher
    Bonjour,
    J'aimerais savoir comment sélectionner une ligne d'un fichier texte pour l'enregistrer dans une variable, ce n'est pas la premiére ligne du ficher et je ne veut pas toucher aux autres lignes.
    Je cherche également a savoir comment écrire dans un fichier texte une variable contenant une ligne, évidement sans toucher aux autres lignes et je ne veut pas l'enregistrer sur la premiére ligne.
    Je sais le faire avec des mots.
    Merci pour vos réponses.

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Le plus simple est d'utiliser std::getline de <string> (pour récupérer les lignes).
    http://www.cplusplus.com/reference/s...tring/getline/

    Je te conseille de lire la FAQ C++ - Entrées / sorties avec les flux.
    Plus précisément, cette entrée là : FAQ C++ - Comment faire pour lire un fichier ligne par ligne ? (pour ta première question).

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse,
    Mais j'ai essayer getline(), et le résultat n'as pas eu l'effet voulus, lorsque j'utilise getline, mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier<<char1<<char2<<char3
    s'annule malheuresement de plus il faut utiliser un string pour getline, et vue que j'affiche mes variable avec SDL_ttf , il me faut un char.

  4. #4
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Il faut que tu donnes le code et un peu plus d'explication car je ne vois pas ce que tu veux dire par «s'annule».

    Pour obtenir un char const * à partir d'un std::string avec la méthode c_str().
    http://www.cplusplus.com/reference/string/string/c_str/

    Sinon, en C++ on préférera la SFML à la SDL qui est (vieille et) en C.

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    s'anulle , en gros ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier<<char1<<char2<<char3
    ne sert plus a rien et les mots censé étre sélectionner par cette ligne sont remplacé par des caractéres.
    Oui, j'ai commencé au départ a faire le code sdl, sans remarqué qu'il a été enregistrer en cpp, alors que je voulais qu'il soit enregistrer en c, ce qui est bizzard c'est que lorsque j'ai créer mon projet sdl dans code::blocks j'ai pas eu le choix entre le c et le c++.
    Ce qui m'enerve c'est que j'arrive pas a comprenne comment utiliser c_str et tout les string en général.
    Ducoup j'ai essayer sa pour prendre une ligne de 5 mots ou moin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        fichier<<nom1<<nom2<<nom3<<nom4<<nom5
        if (nom2){sprintf (nomcomplet, "%s %s ",nom,nom2);}
        if (nom3){sprintf (nomcomplet, "%s %s %s ",nom,nom2,nom3);}
        if (nom4){sprintf (nomcomplet, "%s %s %s %s ",nom,nom2,nom3,nom4);}
        if (nom5){sprintf (nomcomplet, "%s %s %s %s %s",nom,nom2,nom3,nom4,nom5);}
    On m'as déja déconseiller d'utiliser sprintf, mais je trouve cela plus simple, ceulement encore une fois si il y as deux mots par exemple, s'a m'affiche
    mots1 mots2 et aprés une suite de letre et de symbole.
    Mon autre probléme avec getline, c'est que j'arrive pas a comprendre comment prendre la ligne 5 (par exemple), tout comme c_str, j'ai pas compris sont fonctionnement.

  6. #6
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Pour sprintf, utilise des std::string et utilise les opérateur =, +, +=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    std::string phrase;
    {
        std::string m0 = "Quelques";
        std::string m1 = "mots";
        std::string m2 = "pour";
        std::string m3 = "une";
        std::string m4 = "phrase.";
        phrase = m0 + " " + m1 + " " + m2 + " " + m3 + " " + m4;
    }
     
    // Pour obtenir un char const *
    char const * phrase_c_str = phrase.c_str();
    La bibliothèque SDL est écrite en C, son API n'est pas adapté au C++ (mais comme C++ supporte le C, on peux quand même l'utiliser en C++).

    Le plus simple pour ton problème est de :
    - déclarer un std::string
    - ouvrir le fichier en lecture
    - lire toutes les lignes du fichier avant celle qui t'intéresse (et faire un += dans le std::string)
    - lire la ligne qui t'intéresse et la traiter comme il se doit (et faire un += dans le std::string de la nouvelle ligne)
    - lire toutes les lignes jusqu'à la ligne du fichier (et faire un += dans le std::string)
    - fermer le fichier (automatique avec un bon placement de { })
    - ouvrir le fichier en écriture
    - écrire le std::string dans le fichier (f << le_string;)
    - fermer le fichier (automatique avec un bon placement de { })

    Je te conseille de bien écrire l'algorithme détaillé en français avant de coder et nous le donner (avec le code) pour expliquer les soucis que tu rencontres.

  7. #7
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Bon... ok , finalement je vais réessayer getline, mais j'ai toujours pas compris comment séléctioner un autre ligne que la premiére.
    Merci pour tout.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par Progmeur Voir le message
    Bon... ok , finalement je vais réessayer getline, mais j'ai toujours pas compris comment séléctioner un autre ligne que la premiére.
    Merci pour tout.
    Ton premier getline va récupérer la première ligne... suffit de l'ignorer, le getline suivant prendra la 2ème ligne.

  9. #9
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Donc si j'ai un fichier de 2000 ligne , je veut aller a la 1000 éme , je suis obliger d'écrire 1000 getline ?

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par Progmeur Voir le message
    Donc si j'ai un fichier de 2000 ligne , je veut aller a la 1000 éme , je suis obliger d'écrire 1000 getline ?
    oui
    .
    .
    .
    ou alors tu fais une boucle

  11. #11
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    ou il y a flux.ignore au pire, bon je vais mettre ce sujet résolue.

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

Discussions similaires

  1. Supprimer une ligne dans un fichier csv en lecture
    Par Morji2810 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 06/08/2013, 14h18
  2. [XL-2007] Incrémenter d'une ligne dans la feuille l'écriture de la saisie d'une textbox
    Par iriane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/08/2010, 16h40
  3. supprimer une ligne dans un ficher
    Par jadoud dans le forum Linux
    Réponses: 7
    Dernier message: 22/03/2010, 09h09
  4. Ré-écriture d'une ligne dans la fenetre
    Par Yorel2006 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/03/2009, 18h47
  5. Réponses: 1
    Dernier message: 26/09/2007, 19h55

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