find_first_of("/"); probléme de recupuration d'une chaine de caractére dans une ligne
salut, svp si quelqu'un peux m'aidé, pour récupuré une chaine de caracté dans une ligne, le probléme c'est qu'il ya des critére
exemple de la chaine de caractére du fichier d'entré:
FT;4249;D;RFRPAD8/A8;2063à2093
je fais le test sur le caractére "/" je donne la position du debut de la chaine mais mon programme ne trouve pa le slach si je mit :
std::string sousligne1=ligne.substr(pos2+1,pos);
resultat que j'obtient aprés execution:
RFRPAD8/A8;2063à2093
RFRPAD8/A8;2063à2093
sinon pour qu'il reconnais le "/" je doit donné la position depui le debut de la ligne :
std::string sousligne1=ligne.substr(0,pos);
resultat que j'obtient aprés execution:
FT;4249;D;RFRPAD8
A8;2063à2093
le resultat que je veux obtenir dans le fichier de sortie:
RFRPAD8
RFRPAA8
voici le code :
Code:
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
ifstream fichier("proto.txt");
ofstream h("test.txt");
if (fichier)
{
std::string ligne;
while (getline(fichier,ligne))
{
// Récupération 1er champ et écriture dans le fichier
size_t pos0=ligne.find_first_of(";");
//h << ligne.substr(0,pos0) << " " << endl;
//Récupération 2e champ et écriture dans le fichier
size_t pos1=ligne.find_first_of(";",pos0+1);
//h << ligne.substr(pos0+1,pos1-pos0-1) <<std::endl;
// Récupération 3e champ et écriture dans le fichier
size_t pos2=ligne.find_first_of(";",pos1+1);
//h << ligne.substr(pos1+1,pos2-pos1-1) <<std::endl;
// Récupération 4e champ et écriture dans le fichier
size_t pos3=ligne.find_first_of(";",pos2+1);
//h << ligne.substr(pos2+1,pos3-pos2-1) << std::endl;
// Récupération 5e champ et écriture dans le fichier
size_t pos4=ligne.find_first_of(";",pos3+1);
//h << ligne.substr(pos3+1,pos3-pos2-1) <<std::endl;
size_t pos=ligne.find_first_of("/");
std::string sousligne1=ligne.substr(pos2+1,pos);
std::string sousligne2=ligne.substr(pos+1);
std::string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);
if (sousligne1.compare(sousligne2))
{
h<<"CDFX1"<< sousligne1 << "\n" <<"CDFX2"<< sousligne3 << std::endl;
}
else
{
h <<"CDFX"<< ligne.substr(pos2+1,pos3-pos2-1) << std::endl;
}
}
}
fichier.close();
h.close();
} |