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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();
}