C++ urgence svp [Résolu]

Signaler
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
maximus


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

RFRPAD7
RFRPAD8/A8
CDXRTD3/A3
FGDTRE2
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
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

12 réponses

Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

j'ai esséyé avec ce test mais ça me donne tjr le meme resultat

if (sousligne1.compare(sousligne3))
    {
    cout<< sousligne1 << " " << sousligne3 << endl;
    }
    else
    {
    cout << sousligne1 << endl;
    }
maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

#include <string>
#include <fstream>
#include
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);
  
    if (sousligne1.compare(sousligne2))
    {
    cout<< sousligne1 << " " << sousligne3 << endl;
    }
    else
    {
    cout << ligne << endl;
    }
  }
 }


    fichier.close();
}

merçi pour votre aide




maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Bonjour, tu es proche du résultat, faut juste rajouter des tests :
#include <string>
#include <fstream>
#include
using namespace std;
int main()
{
 
    ifstream fichier("slash.txt");    if (fichier)
    {
        string ligne;       
        while (getline(fichier,ligne))
        {
               
            size_t pos=ligne.find_first_of("-");
            if (pos == ligne.length()) { // pas de caractere  -
                cout << ligne;
            }
            else {
            string sousligne1=ligne.substr(0,pos);
            string sousligne2=ligne.substr(pos+1);            string res = sousligne1.substr(0, pos-3) + sousligne2; // gestion des 2 lignes
   cout<< sousligne1 << endl << res << sousligne2 << endl;
}
        }
    }    fichier.close();
}
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

Bonjour,
j'ai un fichier txt, 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 ça doit se fair avec une boucle mais j'arrive pas de le faire !!

mon code :

#include <string>
#include <fstream>
#include
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();
}
maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Bonjour.
Rajoute un test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
 cout<< sousligne1 << " " << sousligne3 << endl;
}
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi mais, ça donne tjr le meme resultat !!
maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Il faut peut etre vérifier le tests, peut être quand dans l'un des cas tu as un caractère non affichable en plus qui fait que le test ne fonctionne pas correctement.
Cdt
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

!!!!!!!!!
maximus
Messages postés
14884
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
30 novembre 2020
93
Bon, ok...
JE vois que mes explications ne te conviennent pas...
C'est dommage d'ouvrir plusieurs topic pour le même sujet...
C'est encore plus dommage de ne pas savoir chercher par soi-même...

Je te souhaite bien du courage pour la suite...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Que te retourne compare sousligne1.compare(sousligne3) quand il on "theoriquement" la meme valeur ?
Messages postés
416
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
19 décembre 2013
2
Salut tout le monde,

 je voudrais juste vous faire remarquer que dans son cas a lui (l'auteur du topic) le caractere ou du moins la chaine de caractere a retrouver pour faire un split est un slah / et non pas un trait-d'union .
size_t pos=ligne.find_first_of("-");       ===>  size_t pos=ligne.find_first_of("/");

sinon le reste du code , avec les tests , est entierement correct. Maintenant s'il dit que ca donne toujours le meme resultat...

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!

/B&
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi mais c résolut