Extraire une chaine de caractères d'une autre chaine plus longue
Salut.
J'ai un fichier qui se présente sous cette forme:
Code:
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:
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.