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 :

question bête: command remonter d'une ligne apres un "getline" ?


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut question bête: command remonter d'une ligne apres un "getline" ?
    Bonjour,
    j'ai une question surement très facile mais je n'ai pas trouvé de commande...

    ==> lorsque j'effectue un "getline" ca me fait descendre d'une ligne

    je voudrais donc remonter d'une ligne ensuite pour rester au même endroit, comment faire s'il vous plait?


    ==> pour etre plus precis:
    j'ai un fichier de plusieurs lignes et lorsque je detect un caratere je veux lire la prochaine ligne, faire des modif et la remplacer.
    pour la premiere chose pas de probleme mais ensuite pour remplacer la ligne je ne sais pas car le getline me fait descendre d'une ligne et je voudrais donc le faire remonter

    j'espere que vous pourrez m'aider...

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    une solution possible consiste à garder en mémoire la position du curseur de lecture avant le getline (avec la fonction membre fstream::tellg), pour le retrouver ensuite (avec la fonction membre fstream::seekg).

    Après je sais pas, ce n'est peut-être pas applicable dans ton cas.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci beaucoup!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    ca m'a bien aidé r0d ce que tu m'as dit mais j'ai encore un petit probleme:
    ==> il faudrait que je trouve une commande qui me permet d'aller en début de ligne car j'ai un probleme dans mon programme


    je m'explique:
    1°) voici le type de fichier texte que j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AAA 0 5
    0 0 0 0 0.1 0.8 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8
    0 0 0 0 0.1 0.8 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8
    2°) ce que j'ai essayé:
    j'ai voulu faire pour m'entrainer un programme qui me prend la premier ligne et la remet à sa place mais voici le résultat que j'ai optenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AAA 0 5
    0 0 0 0 0.1 0.8 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8
     0 0 0 0.1 0.8 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8 0 0 20 0 0.1 0.8
    ==> la 1ere ligne est bonne mais ca m'a modifié la 2eme alors que je ne voulais pas y toucher...

    3°) voici mon programme:

    La fonction tronquer me tronque une phrase en mettant tout les mots dans une case d'un vector "Mottronques" les un à la suite des autres

    4°) erreur:

    à mon avis l'erreur viens de la gestion de la position du pointeur, je pense qu'il faudrait que j'oblige mon curseur a faire des retour à la ligne pour etre certain qu'il est bien au bon endroit?


    Quand pensez vous?

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    Quand pensez vous?
    En général, plutôt le matin. L'après-midi je suis trop fatigué
    Plus sérieusement, j'ai l'impression que tu ne prends pas le problème par le bon bout. Je ne comprend pas bien ce que tu veux faire, mais "revenir au début" d'une ligne n'est pas chose aisée, car il faut déjà être bien certain de l'endroit où on est, et puis il n'y a pas d'autres solution que de revenir en arrière, carractère par carractère, jusqu'à tomber sur un carractère de fin de ligne, qui n'est pas forcément le même selon l'os etc.
    J'ai plutôt l'impression qu'il y a une coquille dans ton code. Par exemple, es-tu bien sûr que MottronquesBis est correctement construit?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Je n'ai pas lu ton code, mais généralement, à moins d'avoir des problèmes de fichiers énormes difficiles à gérer en mémoire, le plus simple est de ne pas faire ce genre de choses, mais de tout lire en mémoire, puis de tout traiter en mémoire, puis de tout réécrire.

    Sachant que comme la notion de ligne n'existe pas vraiment dans un fichier, des opération comme "remplacer une ligne par une autre, de longueur éventuellement différente" demande de gérer manuellement les décalages dans toute la suite du fichier...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci d'avoir pris le temps de répondre, je pense que je vais faire autrement

    (tout lire et tout copier)

    merci de vos conseils

    A+

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/04/2007, 18h59
  2. Sauter une ligne après un JLabel
    Par DefmY dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/05/2006, 10h09
  3. Remonter d'une ligne dans la console
    Par Pragmateek dans le forum C
    Réponses: 8
    Dernier message: 07/05/2006, 00h12
  4. [Debutant]Commande pour sauter une ligne
    Par ghan77 dans le forum Débuter
    Réponses: 6
    Dernier message: 11/01/2006, 15h28

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