Urgence c++

Résolu
Bonjour,

j'ai u fichier txt qui contient des chaine de caracté, exemple :

RFRPAD7
RFRPAD8-A8
CDXRTD3-A3
FGDTRE
ATZRSD5-A5

bon voila le code que j'ai mais ça donne pas le resultat que je veux obtenir.
ça donne un truc commça :

RFRPAD7 RFRPAD7
RFRPAD8 A8
CDXRTD3 A3
FGDTRE2 FGDTRE2
ATZRSD5 A5

maximus #include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{

ifstream fichier("slash.txt");
if (fichier)
{
string ligne;

while (getline(fichier,ligne))
{

size_t pos=ligne.find_first_of("-");
string sousligne1=ligne.substr(0,pos);

string sousligne2=ligne.substr(pos+1);

cout<< sousligne1 << " " << sousligne2 << endl;
}
}
fichier.close();
}

mais sais pas ce que je veux avoir comme resultat
le resultat que je cherche c'esyt ça :

RFRPAD7
RFRPAD8
RFRPAA8
CDXRTD3
CDXRTA3
FGDTRE2
ATZRSD5
ATZRSA5

10 réponses

  1. Contributeur
    tu vedrai tester la presence du character"-" car si il n y est pas, sousligne2=sousligne1
    0
    1. non, voila un exemple :

      1) j'ai une chaine :

      AEZCDA2-D2

      2) je doit avoir :

      AEZCDA2 AEZCDD2
      0
      1. mais avec le code que j'ai j'obtien ça
        AEZCDA2 D2
        est bien sur ce n'est pas ce que je veux :p
        0
        1. Contributeur
          es ce que ca peut arriver que tu aii des trucs comme ca: AEZCDA2-D2-A5-R3 ?
          0
          1. non, just commeça

            AEZCDA2-D2
            ESRZDA3
            0
            1. Contributeur
              j ai pas le temps de le faire.
              utilises les fonctions du C: strchr ou ce genre de chose,
              detecte la position du -, si il n y en a pas, tu copies direct la chaine
              si il y en a un, tu gardes bien son pointeur, tu met le contenu a 0
              tu imprimes la premiere chaine

              ensuite, tu incremente ton pointeur qui pointait sur le - que tu as remplkacé par 0

              tu recupère la longeur de la premiere chaine, la longueur de la 2eme chaine
              et tu fais un strcpy(première chaine+(strlen(premierechaine)-strlen(deuxieme chaine))), deuxieme chaine

              et la tu re imprime la premiere chaine ...
              0
              1. avec ce code j'obtien pour une chaine comme ça

                AFRZSA2-D2
                ADDSEA3

                le resultat

                AFRZSA2 AFRZSD2
                ADDSEA3 ADDSEA3 // je veux pas que cette chaine ce double je veux avoir ADDSEA3

                #include <string>
                #include <fstream>
                #include <iostream>
                using namespace std;
                int main()
                {

                ifstream fichier("slash.txt");

                if (fichier)
                {
                string ligne;

                while (getline(fichier,ligne))
                {

                size_t pos=ligne.find_first_of("-");

                string sousligne1=ligne.substr(0,pos);

                string sousligne2=ligne.substr(pos+1);

                string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);

                cout<< sousligne1 << " " << sousligne3 << endl;

                }
                }

                fichier.close();
                }
                0
                1. Contributeur
                  je sais pas si ce que je veux te faire faire avec les strcpy et les pointeurs est utilisable sur un objet string .... utilise des tableaux de charactères plutot, a la vieille franquette
                  0
                  1. je pense que ça va marché avec un if...else bein je vais esséyé et si ya kélk1 ki peux aidé ça sera la bien venu :p
                    0