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:
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
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


Partager