Ecrire dans un fichier binaire

Ecrire dans un fichier binaire - C++ - Programmation

Marsh Posté le 18-08-2014 à 12:19:25    

Bonjour,
 
Je travaille sur des fichiers de mesures météorologiques (txt) regroupées en colonnes. Une fois que j'ai extrait chaque colonne pour pouvoir l'utiliser seule, l'entreprise me demande de stocker ces données sous format 16bits dans un fichier binaire. J'aimerais savoir comment faire pour que, en ouvrant mon fichier de base et en le lisant en ASCII je puisse en faire plusieurs fichiers .bin avec la conversion que cela implique ...
Ci-dessous le code correspondant à l'extraction des colonnes de données, mais pour le moment la lecture ET l'écriture se font sous format ASCII ...

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. int main()
  5. {
  6. using namespace std;
  7. ifstream liste("liste_de_fichiers.txt", ios::in);
  8. if(liste)
  9. {
  10.  string lisligne;
  11.  string filename0, filename1,filename2,filename3,filename4;
  12.  string ligne;
  13.  double doublea,doubleb,doublec,doubled,doublee,doublef;
  14.  double double1, double2, double3, double4, double5, double6;
  15.  while(getline(liste, lisligne))
  16.  {
  17.    liste >> filename0; //lecture du nom de fichier dans un fichier "liste de fichiers"
  18.    filename1 = "/home/rs/Desktop/eclats/" + filename0 + "_1"; //création du nom du fichier où sera retranscrite la colonne 1
  19.    filename2 = "/home/rs/Desktop/eclats/" + filename0 + "_2"; //colonne 2
  20.    filename3 = "/home/rs/Desktop/eclats/" + filename0 + "_3"; // 3
  21.    filename4 = "/home/rs/Desktop/eclats/" + filename0 + "_4"; // 4
  22.    filename0 = "/home/rs/Desktop/données_modèles/données_modèles/2011/" + filename0; //Nom du fichier de base (avec toutes les colonnes)
  23.    ifstream fichier0(filename0.c_str(), ios::in); //fichier lecture
  24.    ofstream fichier1(filename1.c_str(), ios::out); // ecritures
  25.    ofstream fichier2(filename2.c_str(), ios::out);
  26.    ofstream fichier3(filename3.c_str(), ios::out);
  27.    ofstream fichier4(filename4.c_str(), ios::out);
  28.    if(fichier0 && fichier1 && fichier2 && fichier3 && fichier4)
  29.     {
  30.       fichier0 >> doublea >> doubleb >> doublec >> doubled >> doublee >> doublef; //lecture des 6 colonnes
  31.       //retranscription d'une colonne par fichier        
  32.       fichier1 << doublec*100;
  33.       fichier2 << doubled*100;
  34.       fichier3 << doublee*100;
  35.       fichier4 << doublef*100;
  36.      while(getline(fichier0, ligne))  // tant que l'on peut mettre la ligne dans "contenu"
  37.      {
  38.         fichier0 >> double1 >> double2 >> double3 >> double4 >> double5 >> double6;
  39.         fichier1 << double3*100;
  40.         fichier2 << double4*100;
  41.         fichier3 << double5*100;
  42.         fichier4 << double6*100;
  43.      }
  44.      //fichiers traités
  45.      cout<<filename0<<endl;
  46.      cout<<filename1<<endl;
  47.      cout<<filename2<<endl;
  48.      cout<<filename3<<endl;
  49.      cout<<filename4<<endl;
  50.     }
  51.     else
  52.      cerr<<"Impossible d'ouvrir le fichier!1"<<endl;
  53.  }
  54.  liste.close();
  55. }
  56. else
  57.  cerr<<"Impossible d'ouvrir le fichier!"<<endl;
  58. return 0;
  59. }


Merci d'avance !

Reply

Marsh Posté le 18-08-2014 à 12:19:25   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed