Salut.

J'ai un fichier qui se présente sous cette forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
algocaltop;algocaltopbis
find;findbis
test.html;test1.html
Je veux en extraire à chaque ligne les 2 mots , le point virgule me sert de séparateur.

Voici un extrait du 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
 
Text = QFileDialog::getOpenFileName(this, "Ouvrir la liste ", QString());
    QFile fichier (Text);
    fichier.open(QIODevice::ReadOnly | QIODevice::Text);
    QTextStream flux (&fichier);
    QString CurrentDir = QFileDialog::getExistingDirectory(this, "selectionner le repertoire de fichier à  modifier", QString());
    while( !flux.atEnd() )
 
    {
        QString fichier1;
        fichier1 = flux.readLine();
        QMessageBox::information(0,QObject::tr("debug"),
                                 "debug "+fichier1);
 
 
        int i= 1;
       const  char*  maChaine = fichier1.toStdString().c_str();
       QMessageBox::information(0,QObject::tr("debug"),
                               maChaine);
       QString filename="";
       QString filename1="";
       QString test = "";
       QMessageBox::information(0,QObject::tr("debug"),
                             filename);
 
        while (maChaine[i] != ';')
        {
            i=i+1;
           // QMessageBox::information(0,QObject::tr("debug"),maChaine[i]);
 
            if (maChaine[i] == ';' )
            {
                test = maChaine[i];
            QMessageBox::information(0,QObject::tr("debug"),test);
                break;
             }
            filename += maChaine[i];
 
 
 
 
        }
 
//        QMessageBox::information(0,QObject::tr("debug"),
//                                 "debug "+ CurrentDir+"/"+filename);
              i=i-1;
 
        while (maChaine[i] != '\0')
        {
            i=i+1;
           // QMessageBox::information(0,QObject::tr("debug"),maChaine[i]);
 
            if (maChaine[i] == '\0' )
            {
                test = maChaine[i];
            QMessageBox::information(0,QObject::tr("debug"),test+filename1);
                break;
             }
            filename1 += maChaine[i];
        }
J'ouvre le fichier, je le stocke ensuite dans un const char* et je le parcours à l'aide de 2 boucles, la première s'arrète pour "maChaine=';'" , je continue avec le même incrément pour la seconde et cette fois je m'arrête pour "maChaine = symbole fin de ligne"
Le programme s' arrète bien ou je veux mais les 2 chaines que je récupére me donnent des symboles complètement aléatoires pouvant même parfois contenir les chemins de fichiers de mon disque !!

Après quelques recherche sur le net je crois comprendre qu'il s'agit d'un problème de tampon, mais je n'en sait pas plus.

J'utilise qt mais c'est je pense un problème de c++.

Merci d'avance.