Pour information:
Il existe
une page entière dans la FAQ qui devrait répondre à l'ensemble de tes questions sur tout ce qui a trait aux fichiers... Je ne pourrais que te conseiller d'aller y jeter un oeil ;)
Comme je l'ai indiqué dans les commentaires, il est déconseillé d'utiliser les tableaux "C style", car la classe vector est bien plus sécurisante, et t'évite le recours épineux à l'allocation dynamique, voir l'un des autres conteneurs classiques de la STL, selon le type d'accès que tu prévois de faire sur les éléments contenus (std::vector si tu prévois un acces direct, std::list si tu prévois un acces séquentiel, voir encore un autre, selon tes besoins ;) )
De plus, il faut savoir que *idéalement* tu dois veiller à respecter le paradigme RAII (Ressource Acquisition Is Initialisation, ou, si tu préfères en français: l'acquisition de ressources est l'initialisation).
Ainsi, il semblerait franchement pas mal d'envisager de modifier ta classe photon pour que, de toutes manières, le membre tps_arrive soit l'un des conteneurs de la STL dont j'ai parlé plus haut.
Tu aurais alors deux solutions: remplir le conteneur à la lecture et le passer dans le constructeurs de ta classe photon, ou prévoir une méthode permettant de rajouter des éléments à la demande.
En gros, la classe photon deviendrait donc:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class photon
{
public:
photon():ponderation(0){}// constructeur sans fournir les valeurs
photon(const std::vector<long long>& tps):tps_arrive(tps)
{
calculePonderation();
}
void addTps(long long toadd)
{
tps_arrive.push_back(toadd);
calculePonderation();
}
private:
std::vector<long long> tps_arrive;
int ponderation;
void calculePonderation()
{
/* je présumes que la pondération devrait être recalculée
* à chaque fois... fais le ici
*/
}
}; |
Ensuite, tu pourrais prévoir de lire, tout simplement, le fichier sans t'inquiéter outre mesure du reste sous une forme proche de
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| int main()
{
std::ifstream ifs("le_fichier.txt");
/* une solution parmis d'autre
* car le nom du fichier pourrait ne pas etre codé en dur
*/
long long lecture;
/* solution 1 */
std::vector<long long> tab;
while((ifs>>lecture))
tab.push_back(lecture);
photon monphotontoutneuf(tab);
/* solution 2 */
photon monphotontoutneuf;
while((ifs>>lecture))
monphotontoutneuf.addTps(lecture);
/* de toute manière, à partir d'ici, tu peux utiliser ton photon ;)
* ...
*/
return 0;
} |
[EDIT] PS :
Au passage: le premier conseil à garder en mémoire est "aide nous à t'aider"...
Plus tu nous fournira dés le départ des informations claires et précises, plus tu auras de chances d'obtenir rapidement une réponse claire, précise et adaptée à tes besoins ;):D