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
Partager