Bonjour,
Je me remet au C/C++ après de longue années où je ne l'utilisais pas et évidemment je galère...
j'essaye d'ouvrir des fichiers contenant un header puis une image codée en 16 bit.
(ça ressemble au dicom mais c'est un peu différent c'est des fichiers .vff de chez ge).
là j'en suis à essayer de lire ligne à ligne le header pour récuperer les informations.
j'ai fait ça pour le moment :
et je n'arrive pas à compiler à cause de l'avant dernière ligne avec getline.
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 #include <stdlib.h> #include <stdio.h> #include <math.h> #include <iostream> #include <string> #include <sstream> #include <sys/types.h> #include <dirent.h> #include <errno.h> #include <vector> #include <conio.h> #include <algorithm> #include <functional> #include <iterator> using namespace std; /*function getdir*/ int getdir (string dir, vector<string> &files) { DIR *dp; struct dirent *dirp; if((dp = opendir(dir.c_str())) == NULL) { cout << "Error(" << errno << ") opening " << dir << endl; return errno; } while ((dirp = readdir(dp)) != NULL) { files.push_back(string(dirp->d_name)); } closedir(dp); return 0; } // end function getdir //function main int main() { vector<string> files = vector<string>(); string input = ""; FILE *input_file; // How to get a string/sentence with spaces cout << "Enter the path of the folder where there is only the projections :\n>"; getline(cin, input); getdir(input,files); for (unsigned int i = 0;i < files.size();i++) { cout << files[i] << endl; } getch(); vector<const char*> starts; transform( files.begin(), files.end(), back_inserter( starts ), mem_fun( &string::c_str ) ); const char** arr = &starts.front(); for (unsigned int i = 0;i < starts.size();i++) { /* Read projection file*/ if ((input_file = fopen(starts[i], "r")) == NULL) { fprintf(stderr, "Cannot open input file \n" ); } input_file = fopen(starts[i], "r"); /* Read the header */ std::string line; getline(input_file,line); cout << line << endl; } }
je sais que files est bien rempli comme il faut.
il a l'air d'ouvrir input_file correctement aussi.
quand je compile il me fait l'erreur :
"no matching function for call to getline(FILE*&,std::string&)"
j'ai essayé de changer la nature de line mais ça n'a rien changé.
je comprend pas trop parce que sur internet je vois des forums où il est dit que getline s'utilise comme ça.
Partager