Bonjour,

J'ai un code C++ qui lit dans un fichier. Je sais exactement ce que je dois trouver et l'ordre, aussi, je parcours ligne par ligne, si je trouve bien "mon entier=", je lis la ligne dessous et j'affecte à mon entier la valeur lue ... etc ..
Cela fonctionne très bien mais le code est très redondant.

Etant débutant en C++, je n'ai pas réussi à le factoriser :

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
  int monentier;
  double mondouble;
  char monchar[100]
  fichier.open("file.in", ios::in);
  fichierRead.open("file.in.read");
  getline( fichier, ligne ) ;
  fichierRead<<ligne<<endl;
  cout << "#1 ligne >>"<< ligne <<"<<" <<endl; 
  if ( ligne == " monentier= " )
  {
  	fichier>>monentier;
	getline( fichier, ligne ) ;
	fichierRead<<monentier<<endl;
  } 
  //
  getline( fichier, ligne ) ;
  fichierRead<<ligne<<endl;
  cout << "#2 ligne >>"<< ligne <<"<<" <<endl;
  if ( ligne == " monchar= " )
  { 
	fichier>>monchar;
	getline( fichier, ligne ) ;
	fichierRead<<monchar<<endl;
  }
 
...

J'ai bien évidemment fait des recherches et trouvé quelques pistes du coté
des templates par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename T>
void readAndWrite(T& cible, fichier, fichierRead )
{
  string ligne;
  getline( fichier, ligne ) ;
  fichierRead<<ligne<<endl; 
  if ( ligne == pattern )
  {
  	fichier>>cible*;
	getline( fichier, ligne ) ;
	fichierRead<<cible*<<endl;
  } .
}
mais cela ne fonctionne pas, je pense que je ne suis pas très loin mais je n'arrive pas à faire fonctionner la chose.

Pourriez-vous m'aider s'il vous plait ?
Merci d'avance