rattlesnake | 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 :
- #include <iostream>
- #include <fstream>
- #include <string>
- int main()
- {
- using namespace std;
- ifstream liste("liste_de_fichiers.txt", ios::in);
- if(liste)
- {
- string lisligne;
- string filename0, filename1,filename2,filename3,filename4;
- string ligne;
- double doublea,doubleb,doublec,doubled,doublee,doublef;
- double double1, double2, double3, double4, double5, double6;
- while(getline(liste, lisligne))
- {
- liste >> filename0; //lecture du nom de fichier dans un fichier "liste de fichiers"
- filename1 = "/home/rs/Desktop/eclats/" + filename0 + "_1"; //création du nom du fichier où sera retranscrite la colonne 1
- filename2 = "/home/rs/Desktop/eclats/" + filename0 + "_2"; //colonne 2
- filename3 = "/home/rs/Desktop/eclats/" + filename0 + "_3"; // 3
- filename4 = "/home/rs/Desktop/eclats/" + filename0 + "_4"; // 4
- filename0 = "/home/rs/Desktop/données_modèles/données_modèles/2011/" + filename0; //Nom du fichier de base (avec toutes les colonnes)
- ifstream fichier0(filename0.c_str(), ios::in); //fichier lecture
- ofstream fichier1(filename1.c_str(), ios::out); // ecritures
- ofstream fichier2(filename2.c_str(), ios::out);
- ofstream fichier3(filename3.c_str(), ios::out);
- ofstream fichier4(filename4.c_str(), ios::out);
- if(fichier0 && fichier1 && fichier2 && fichier3 && fichier4)
- {
- fichier0 >> doublea >> doubleb >> doublec >> doubled >> doublee >> doublef; //lecture des 6 colonnes
- //retranscription d'une colonne par fichier
- fichier1 << doublec*100;
- fichier2 << doubled*100;
- fichier3 << doublee*100;
- fichier4 << doublef*100;
- while(getline(fichier0, ligne)) // tant que l'on peut mettre la ligne dans "contenu"
- {
- fichier0 >> double1 >> double2 >> double3 >> double4 >> double5 >> double6;
- fichier1 << double3*100;
- fichier2 << double4*100;
- fichier3 << double5*100;
- fichier4 << double6*100;
- }
- //fichiers traités
- cout<<filename0<<endl;
- cout<<filename1<<endl;
- cout<<filename2<<endl;
- cout<<filename3<<endl;
- cout<<filename4<<endl;
- }
- else
- cerr<<"Impossible d'ouvrir le fichier!1"<<endl;
- }
- liste.close();
- }
- else
- cerr<<"Impossible d'ouvrir le fichier!"<<endl;
- return 0;
- }
|
Merci d'avance ! |