Bonjour à tous,

J'ai un petit problème avec un fichier txt, j'ai un fichier txt qui a cette forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
BT     1
BN bonjour
BG  
BU  
BB  
BM NH
BP A:001 P01:test P02:00001400 P03:00001400 P09:string
KS toto tata
BT       20
....
Ce bloc peut se répéter N fois dans le fichier txt. Je fait donc une boucle while afin de parcourir chacune de mes lignes avec ifstream, et j'utilise boost afin de séparer ma ligne sur chaque espace, comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
while(std::getline(fichier, line))
{ 
    std::vector<std::string> tokens;
    boost::split(tokens, line, boost::is_any_of(" "));
}
Moi ce que j'aimerais faire c'est récupérer un tableau de ligne pour chaque section. Une section commence par BT et dès que je retombe sur un BT j'ai une nouvelle section. Mon while est donc :

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
while(std::getline(fichier, line))
{ 
    std::vector<std::string> tokens;
    boost::split(tokens, line, boost::is_any_of(" "));
 
    if(tokens[0].compare("BT") == 0)
    {
          //nouvelle section detecte ici                 
 
    }
    else if(tokens[0].compare("BP") == 0)    
    {
 
    }
    else 
    {
 
    } 
}
Problème je ne sais pas trop comment faire pour avoir au final quelque chose comme ça :

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
[0] => Array
                (
                    [0] => BT     1
 
                    [1] => BN poteau
 
                    [2] => BG  
 
                    [3] => BU  
 
                    [4] => BB  
 
                    [5] => BM NH
 
                    [6] => BP A:001 P01:test P02:00001400 P03:00001400 P09:string
 
                    [7] => KS toto tata
               )
[1] => Array(
                    [1] => BT       20
 
                    [2] =>  ...........
 
               )