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

wxWidgets Discussion :

lecture écriture scientifique


Sujet :

wxWidgets

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut lecture écriture scientifique
    Salut !
    Je suis un peu coincé, là. Je n'ai jamais aimé les lecture/ecriture. J'utilisais jusque-là une approche C dans wxWidgets :

    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
    FILE *FiLec
    wxStrinf filename= wxFileSelector(wxT("Load meca"), wxT(""), wxT(""), wxT(""), wxT("*"),wxOPEN);
     
    if(!filename.empty())
      {
       const char * pFileName = nomfichier.mb_str();
     
        if((FiLec = fopen(pFileName,"rt")) != NULL)
          {
           i= 0;
           float ep, epp;
           fscanf(FiLec,"%d",&param.J);
           while(i < param.J)
              {
               fscanf(Filec,"%E %E", &ep,&epp);
               param.prmep.push_back(ep);
               param.prmepp.push_back(epp);
               i++;
              }
            fclose(FiLec);
          }
       }
    qui fonctionnait sous win mais plante sous linux. Du coups, je me suis dit que ce serait bien de réécrire en C++ propre, voir en C++-wxW, si je puis dire, mais je ne vois pas trop comment faire pour lire comme ci-dessus dans des fichiers texte ?

    De la même façon, pour écrire au format %E je fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(blabla)
    {
    fprintf(FiWri, "%E %E", real1[i], real2[i])
    }
    Mais j'ai peur que ça plante également... Si qqn a des suggestions, je suis preneur !

    Merci beaucoup !

    Hugo

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Par défaut
    Voici un essai en C++ avec STL (moi je n'ai qu'une liste de double, mais ça devrait pas être trop difficile à adapter à ton cas) :

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <cstdlib>
    #include <vector>
    #include <string>
     
    using namespace std;
     
    typedef vector<double> List;
     
    List values;
     
    bool save_file(const string& filename, const List& list)
    {
    	ofstream output(filename.c_str(), ios_base::out);
    	if (!output)
    	{
    		cout << "Erreur d'écriture." << endl;
    		return false;
    	}
     
    	output << list.size() << "\n";
    	for (List::const_iterator i = list.begin(); i != list.end(); ++i)
    	{
    		output << scientific << *i << "\n";
    	}
     
    	output.close();
    	return true;
    }
     
    bool load_file(const string& filename, List& list)
    {
    	ifstream input(filename.c_str());
    	if (!input)
    	{
    		cout << "Erreur de lecture." << endl;
    		return false;
    	}
     
    	list.clear();
     
    	size_t num;
    	input >> num;
    	list.reserve(num);
    	for (size_t i = 0; i < num; ++i)
    	{
    		double value;
    		input >> value;
    		list.push_back(value);
    	}
     
    	return true;
    }
     
    int main(int argc, char* argv[])
    {
    	values.push_back(5.46e-3);
    	values.push_back(5.32e-3);
    	values.push_back(5.11e-3);
    	save_file("values.txt", values);
     
    	values.clear();
     
    	if (load_file("values.txt", values))
    	{
    		cout << "Lecture de " << values.size() << " valeurs :\n";
    		for (List::const_iterator i = values.begin(); i != values.end(); ++i)
    		{
    			cout << scientific << *i << "\n";
    		}
    	}
     
    	return EXIT_SUCCESS;
    }
    NB. La gestion des erreurs est très basique!

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Par défaut
    Bonjour Biozic,

    Merci beaucoup pour ta réponse je vais m'y mettre !

    Hugo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher en écriture scientifique
    Par speedcore dans le forum C
    Réponses: 7
    Dernier message: 11/10/2010, 22h57
  2. [VB6] Vérification des droits de lecture/écriture sur répert
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/02/2006, 18h41
  3. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  4. Lecture / écriture sur un port com
    Par dorian833 dans le forum C++
    Réponses: 7
    Dernier message: 07/07/2005, 15h20
  5. [communication série] problème lecture/écriture
    Par davinout dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 01/06/2005, 13h14

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