Comment utiliser un objet
J'essaye de faire un petit programme qui convertit un fichier binaire en fichier texte.
Je veux le lancer comme suit :
./Convert -i nomdufichierbinaire -s nomdufichiersortie
J'ai créé 2 classes : une Fichier et une Convert
Dans mon main, je crée un objet de type Fichier et je récupère les 2 noms situés au dessus.
J'ouvre le premier en lecture et le second en écriture.
Je crée un objet Convert qui doit traiter ces 2 fichiers. Cependant, je n'arrive pas à récupérer ces deux fichiers.
Je vous mets mon main et mes headers :
Code:
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 77 78 79 80 81 82 83 84 85
| #include <iostream>
#include <fstream>
using namespace std;
#include "Fichier.hpp"
#include "Convert.hpp"
#include <string.h>
void errorUsage() {
printf("usage : Convert [-i <infile>] [-s <outfile>]\n");
printf("<infile> : input file \n");
printf("<outfile>: output file \n");
}
void decodeArguments(int argc, char* argv[],string &inputFile, string &outputFile)
{
int i;
cout<<"argc "<<argc<<endl;
for (i = 1; i < argc; ++i)
{
if (!strcmp(argv[i], "-i"))
{
printf("...Convert input file set to : %s\n", argv[i + 1]);
inputFile = string(argv[i+1]);
cout<<" input "<<inputFile<<endl;
i++;
}
else if (!strcmp(argv[i], "-s"))
{
printf("...Convert problem directory set to : %s\n", argv[i + 1]);
outputFile = string(argv[i+1]);
cout<<" output "<<outputFile<<endl;
++i;
}
else if (!strcmp(argv[i], ">"))
{
i++;
}
else errorUsage();
}
}
int try_Convert(int argc, char* argv[])
{
string input;
string output;
clock_t t0 = clock();
// decode arguments
decodeArguments(argc, argv,input,output);
// constructor initialing the library
Fichier fichier;
fichier.setNameInput(input);
fichier.setNameOutput(output);
fichier.OpenFile();
Convert convert ;
convert.ConvertBinToLong();
convert.ConvertBinToFloat();
convert.ConvertBinToFloat();
convert.ConvertBinToInt();
convert.ConvertBinToChar();
convert.ConvertBinToInt();
clock_t t1 = clock();
return 0;
}
int run_Convert(int argc, char* argv[])
{
try
{
try_Convert(argc, argv);
}
catch (bad_alloc& ba)
{
printf("Bas alloc\n");
printf("%s\n", ba.what());
}
return 0;
}
/*@}*/ |
Code:
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
| #ifndef _FICHIER_
#define _FICHIER_
#include <iostream>
#include <fstream>
class Fichier
{
public:
// Fichier utilisé
std::ifstream InFile;
std::ofstream OutFile;
// Fonction
Fichier();
void setNameInput(std::string input);
void setNameOutput(std::string output);
std::string getNameInput();
std::string getNameOutput();
int OpenFile();
int CloseFile();
int getSizeInFile();
int AppendOutFile(int val);
int ReadInt(int pos, int size);
long AppendOutFile(long val);
long ReadLong(int pos, int size);
char AppendOutFile(char val);
char ReadChar(int pos, int size);
float AppendOutFile(float val);
float ReadFloat(int pos, int size);
private:
std::string infile_name;
std::string outfile_name;
};
#endif |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #ifndef _CONVERT_
#define _CONVERT_
#include <iostream>
#include <fstream>
#include "Fichier.hpp"
class Convert
{
private:
int size;
int position;
public:
Fichier fichier;
Convert();
int ConvertBinToLong();
int ConvertBinToFloat();
int ConvertBinToChar();
int ConvertBinToInt();
};
#endif |