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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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