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

Qt Discussion :

stocker un fichier de donnees rapidement


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 20
    Points
    20
    Par défaut stocker un fichier de donnees rapidement
    Bonjour,

    Je cherche a stocker le plus rapidement possible les colonnes d'un fichier texte, afin de produire des graphiques (x=f(t), y=f(t)...etc).

    Le fichier texte est organise en 8 colonnes mais seules les 4 premieres m'interessent.
    Mon algorithme lit chaque ligne du fichier, puis sectionne la ligne et stocke les elements dans le vecteur 'coords' :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    while (!in.atEnd()) {
                QString line = in.readLine();
                QStringList coords = QStringList::split(" ", line); 
     
    	    time=coords[0].toDouble();
    	    x=coords[1].toDouble();
    	    y=coords[2].toDouble();
    	    z=coords[3].toDouble();
     
    	    data_column_01.push_back(time);
    	    data_column_02.push_back(x);
    	    data_column_03.push_back(y);
    	    data_column_04.push_back(z);
    Ca marche mais ca peut etre tres long...(certains fichiers comportent 500 000 lignes).

    Je recherche donc une meilleure solution. Je pense a certains langages comme python qui permettent d'extraire une colonne d'un fichier tres rapidement.

    Mais comment integrer ca dans une appli Qt ??...

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Pour accélérer un peu tout ça, tu devrais lire l'intégralité du fichier dans un buffer. Ensuite, tu split tout le buffer sur ' ' ou '\n', et tu n'as plus que les conversions à faire une par une.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci pour la suggestion.

    Finalement j'ai prefere retourner a une solution de type C avec fgets() et sscanf() car je ne connais pas bien l'utilisation des buffers...

    En tout cas la methode readline() n'est vraiment pas adaptee a cette uttilisation...

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/09/2017, 17h03
  2. Réponses: 0
    Dernier message: 10/08/2007, 18h26
  3. Réponses: 2
    Dernier message: 13/01/2007, 23h04
  4. lecture de mon fichier de donnees initiales
    Par salseropom dans le forum C
    Réponses: 9
    Dernier message: 13/01/2006, 14h41
  5. Réponses: 3
    Dernier message: 01/10/2005, 21h26

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