rattlesnake | Bonjour,
En effet, ma question n'est pas assez clairement formulée, mais je me rends compte que moi même j'avais mal saisi ce que l'on me demandait...
Merci pour vos réponses,
Au fait, je pensais que l'on me demandait seulement de convertir les int en chaines de caractères de 16bits et de les stocker dans un fichier, mais après explication, ils veulent que j'écrive directement dans un fichier binaire sous format 16bits, sachant que la lecture du fichier de base est en ASCII.
Les fichiers de mesures ressemblent à ça :
12 13.2 158 10
11.1 15 10.1 15
...
J'extrais chaque colonne (correspondant à une donnée en particulier), et l'écris dans un fichier séparé, mais on me demande de ne pas l'écrire telle quelle, mais de créer des fichiers binaires où elles seront écrites en 16bits...
Quelqu'un peut-il m'éclairer?
Ci-dessous le code à l'état actuel :
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 ! |