ifstream, dérivation ou encapsulation ?
Salut à tous et bonne année :D !
Voila, j'ai un petit problème, petit car je pourrai passer par des moyens détourné. Je vous explique, j'ai un fichier configuration à charger, simple fichier texte listant un certain nombre de données dans un certain ordre. J'aimerais y ajouter des commentaires, précédé d'un '#' par exemple. Jusque là, il n'y a pas de soucis.
Oui, mais voila, je voudrai que ça soit complètement transparent à l'utilisation, je souhaiterai pouvoir faire des "file>>value" qui ignorerai automatiquement les commentaires. Pour cela, deux solutions me sont venus à l'esprit, l'encapsulation tout d'abord ou la dérivation ensuite.
la dérivation par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
class CFileConfig : public std::ifstream
{
public:
CFileConfig(const char * filename):std::ifstream(filename){};
~CFileConfig();
};
/* plus loin */
CFileConfig file("file.txt");
int var1,var2;
file>>var1>>var2; |
Mon problème est donc surdéfinir l'opérateur >> afin qu'il garde la capacité d'écrire dans n'importe quel type de donnée tout en ignorant les lignes commencant par un #...
Merci d'avance pour vos pistes :)
Edit: Oula, je viens de me rendre compte que ce message risque de ne pas être au bon endroit… :oops: