IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Extraire une chaine de caract�res d'une autre chaine plus longue


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 59
    Par d�faut 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 : 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.

  2. #2
    Membre confirm�
    Inscrit en
    Ao�t 2005
    Messages
    136
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 136
    Par d�faut
    Bonjour,

    J'ai regard� vite fait la doc de QT, et j'ai trouv� que l'on peut ajouter un QTextCodec qui devrait r�pondre a ton besoin.ici

    Par contre, je n'ai jamais essay� de l'impl�menter.

    sinon, j'ai d�j� fait ce genre d'op�ration, mais j'avais utilis� la STL.

    Si tu veux plus d'info, j'essayerais de te donner un exemple!

    [edit]
    En regardant un peu plus ton code, il y a une chose qui me gene:
    J'aurais plut�t copi� la chaine dans un autre char pour l'affecter en un seul coup par la suite.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    PremChaine[i] = machaine[i];
    //puis en dehors de la boucle
    filename = PremChaine;

  3. #3
    Membre �m�rite
    Avatar de mitkl
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2010
    Messages
    364
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 364
    Par d�faut
    Bonjour,

    tu peux faire bien plus simplement en utilisant QString::split().

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 59
    Par d�faut
    Merci pour l'aide.

    Sous quel type doit �tre la variabe PremChaine?J'ai test� char ,Qchar et const char et il m'affiche toujours des erreurs de compilation pour cette ligne.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 59
    Par d�faut
    Bonjour,

    tu peux faire bien plus simplement en utilisant QString::split().
    J'avais un turc �quivalent au d�part mais j'avais besoin que SEUL les points virgules soit consid�r�s comme s�parateurs. En effet un mot peut m�me contenir des espaces

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 59
    Par d�faut
    D�cidement bien �trange, j'ai utilis� un QString pour la variable PremChaine[i] J'ai aussi rajouter la methode secodec � mon flux , mais n'y fait.

    J'ai toujours ces affreux symboles.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2011
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 59
    Par d�faut
    Idem avec char * ou char[512]

  8. #8
    Membre confirm�
    Inscrit en
    Ao�t 2005
    Messages
    136
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 136
    Par d�faut
    PremChaine serait de la forme char*.
    avec XXX qui peut etre de la taille de la ligne en cours.
    ou plus dangereux: char PremChaine[512]...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 31/01/2008, 17h58
  2. R�ponses: 1
    Dernier message: 06/08/2007, 03h23
  3. R�ponses: 2
    Dernier message: 14/12/2006, 09h37
  4. Fonction qui transforme chaine de caract�re par une autre?
    Par geoffreykill dans le forum PostgreSQL
    R�ponses: 7
    Dernier message: 09/12/2004, 14h31
  5. [String]Recherche d'une chaine de caract�res dans une autre
    Par Crazyblinkgirl dans le forum Langage
    R�ponses: 3
    Dernier message: 29/07/2004, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo