Aide : pour lire et ecrire des valeurs dans un fichier .txt

Signaler
Messages postés
5
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
7 avril 2009
-
Messages postés
5
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
7 avril 2009
-
Bonjour,
Je suis très débutant en C++.
Et très récemment j'ai ecris un programme pour calculer les taux de changes.
Il me demande sur qu'elle monnaie je veux me baser
Puis les taux de change des autres monnaies
Et j'aimerais ne pas avoirs a rerentré le taux de change a chaque ouverture du programme.
Et comme il y a que l'euro le kwancha et le dollars je me suis dis que ça servait pas a grand chose de faire une base de donnée mysql.
Donc ma question c'est comment faire pour sauvegarder les valeur sur un fichier texte, puis les récupérer du fichier texte et si il le faut pour les modifier. J'ai chercher mais j'ai vu qu'il falait le faire avec une BDD access, xml puis j'ai aussi entendu parler de STL.

Et la ou j'habite j'ai très peu internet donc je n'ai que très peu le temps de faire des recherches précisent et je repondrais pas rapidement .


Merci beaucoup de votre aide

5 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
Pour la lecture de valeur tu peux t'inspirer de ce code source :
http://www.cppfrance.com/codes/LIRE-VALEURS-DECIMALES-FICHIER-PUIS-STOCKER-DANS-TABLEAU_23194.aspx

Sinon pour l'écriture, ce n'est pas très compliqué, il faut utiliser la fonction fwrite.

Si tu es only sur windows, le mieux est de passer par l'API :

CreateFile(...)  // Ouvre un fichier
ReadFile(...) // Lis dans un fichier
WriteFile(...) // Ecrit dans un fichier
CloseHandle(...) // Permet de libérer l'ouverture du fichier, c'est a dire le fermer

Shell
Messages postés
5
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
7 avril 2009

Je prefère pas utiliser CreateFile etc... parce que je vais repasser sous linux après.
A moin que ce soit beaucoup plus facile CreateFile() ReadFile() WriteFile() CloseHandle().
Enfin j'ai vu que c'était tres utiliser en VB et .NET mais j'ai trouver aucune doc  sur comment ça marche...
Ce qui m'interresse c'est vraiment de faire quelque chose comme cin >> a; (ça s'ecris sur le fichier.txt)
puis a la 2eme utilisation du programme qu'il aille chercher la valeur de "a" .
J'ai vu des codes avec des data.dat mais j'ai absolument pas compris...
enfin, merci de l'aide en tout cas.
sago
Messages postés
5
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
7 avril 2009

On m'a toujours dit qu'il fallait assayer d'improviser en C++...
J'ai essayer avec fstream
Apres plusieurs heure (je suis tres debutant) j'ai fini par aboutir a une poubelle qui marche pas...
j'aimerai presenter mon code, et que vous m'expliquiez comment je peux resoudre mon probleme...

#include <cstdlib>
#include
#include <string>
#include <fstream>

using namespace std;

void ChooseMoney();
void Taux();
const string nom_fichier("data.dat");
ofstream fichier(nom_fichier.c_str());//Les flots
ifstream fichier(nom_fichier.c_str());//Les flots
string N_monnaie, a, b;
long double  tauxA(1.1), tauxB(1.1), nb_N(1.1);
int i, euro, dollars, kwancha,;

void ChooseMoney()
{
     i = 1;
     euro = 0;
     dollars = 0;
     kwancha = 0;
      cout << "\nChoisissez la monnaie de depart" << endl;
      cout << " Ou appuyez sur un autre bouton pour quitter\n";    cout << "1 euros , 2 kwancha, 3 = dollars, 0 = Quitter : \n";
   
    cin >> i;
    if(i == 0){
         fichier.close();
         exit(0);
         }
         fichier << i; // pour ecrire i dans le fichier
    cout << "\n" ;
    switch(i)
    {
              case 1: euro = 1;
                   N_monnaie = "euros";
                   a = "kwanchas";
                   b = "USDollars";
                  
                   break;
              case 2:
                   kwancha = 1;
                   N_monnaie = "kwanchas";
                   a = "euros";
                  b = "USDollars";
               
                   break;
              case 3 :
                   dollars = 1;
                   N_monnaie = "USDollars";
                   a = "kwanchas";
                   b = "euros";
                   break;
                   default : exit(0);
                   break;
   
              }
              fichier << N_monnaie << a << b; // Les nom de l'argent
    Taux();
   
    }

void Taux()
{
    tauxA = 0,0;
     tauxB = 0,0;
     bool x = 0;
     while(x == 0){
                if(N_monnaie == "euros")
                {
                             cout << " Votre monnaie de depart est l'";
                             fichier >> N_monnaie.substr(0, 4);
                             cout << endl;                       //la j'ai improviser :/
                             }
                else if(N_monnaie == "USDollars"){
                    
                cout << " Votre monnaie de depart est l'"; fichier >> N_monnaie.substr(0, 8); cout << endl;
                }
                else{
                      cout << " Votre monnaie de depart est le "; fichier >> N_monnaie.substr(0, 7); cout << endl;
                     }
                cout << "Veuillez indiquer le taux de change des deux autre monnaie \n\n Pour les nombres a virgule veuillez mettre un point a la place de la virgule (1,2 = incorrecte) (1.2 = correct) \n\n\n";
                fichier >> a; cout << " : ";       // enfin maintenant je sais que ça marche pas
                cin >> tauxA;
                cout << "\n"; fichier >> b; cout << " : ";
                cin >> tauxB;
                fichier << tauxA << tauxB;
                bool y = 0;
               
                while(y == 0)
                {
                if(N_monnaie == "euros")
                {            
                cout << "\nIndiquez combien vous avez d'"; fichier >> N_monnaie; cout << "\n";
                }else if(N_monnaie == "USDollars"){
                     
                cout << "\nIndiquez combien vous avez d'"; fichier >> N_monnaie; cout << "\n";
                }else {
                cout << "\nIndiquez combien vous avez de "; fichier >> N_monnaie; cout << "\n";
                     }
                cin >> nb_N;
                long double finA = tauxA * nb_N;
                long double finB = tauxB * nb_N;
                fichier << finA << finB;
                fichier >> nb_N; cout << " "; fichier >> N_monnaie <<; cout " sont egaux a : \n";  fichier >> finA; cout << " "; fichier >> a; cout << "\net\n"; fichier >> finB; cout << " "; fichier >> b; cout << endl;  
               
                cout << "\nVoulez vous changer la somme de votre argent ? (1 = non) (0 = oui) (" << endl;
                cin >> y;
                }
               
               
                cout << "\n\nRetourner au Menu de selection de la monnaie ? (1 = non) (0 = oui) : \n";
                cin >> x;
                cout << "\n\n";
                }
                ChooseMoney();
                }          
               

int main(int argc, char *argv[])
{
    cout << "\n        ***********************                \n\nICalcTaux est un programme qui permet de calculer les taux de change\n        ***********************      \n\n";
   
        if(N_monnaie "USDollars" || N_monnaie "euros" || N_monnaie == "kawanchas") /*Si on recupère des valeurs dans le fichier on rentre directement dans taux */
    {
   
       Taux();
      
}
       else
       {
            ChooseMoney();
            }           
   
    return 0;
}

J'ai honte ... enfin bon j'ai tester plein de trucs mais dans aucun cas j'ai reussis a compiler...

Et voila c'est ce petit programme qui m'embete...

sago
Messages postés
11
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
9 octobre 2008

J'ai pas regardé ton code en entier mais déjà au lieu de :

ofstream fichier(nom_fichier.c_str());
ifstream fichier(nom_fichier.c_str());

il faut faire
fstream fichier(nom_fichier.c_str()); (il gère directement la lecture et l'écriture)

et ta ligne :

fichier >> nb_N;cout << " "; fichier >> N_monnaie; <<; cout " sont egaux a : \n";  fichier >> finA; cout << " "; fichier >> a; cout << "\net\n"; fichier >> finB; cout << " "; fichier >> b; cout << endl; 
 ne veut absolument rien dire.
On se sert des stream comme ceci : stream >> variable (lit ds stream et remplie variable) ou stream << variable (lit la variable et remplie le stream) Il n'y a pas d'autre méthode.

Bonne chance,

Marie & Bob
Messages postés
5
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
7 avril 2009

donc
fichier << a;
c'est bon...
et
fichier >> a; ...
J'ai peu de temps libre je remet ça a dans quelques mois

merci beaucoup de ton(votre ) aide(s)

sago