Factoriser le code (via template<typename T> ?)
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:
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:
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