Bonjour tous,

J'ai un petit programme à faire pour jeudi mais je rencontre de grosses difficultés car je n'ai pas l'habitude du C++ et de la manipulation des chaines de caractères, c'est pour cela que je vous sollicite.

Je dois faire un debut de programme où le main.cpp nous renvoi à une fonction input qui permettra de lire un fichier texte (de taille variable) et classer les objets dans des vecteurs (<vector>):

Voici mon fichier texte (exemple):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
# matrix name lattice_parameter atomic_volume
matrix ferrite 2.85 1e-30
matrix aluminium 1.85 1.2e-30
 
#precipitate name lattice_parameter atomic_volume 
precipitate VC 4.1
precipitate Mg2Si 4
precipitate Mg5Si6 4.7
 
#element name stoechiometrique coeff
Mg2Si 2 1
Voici mon main.cpp (je ne sais pas trop comment allouer la memoire dynamique et en meme temps renvoyer le contenu du fichier txt à une fonction):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "input.h"
using namespace std;
int *dataBase = NULL;
int main(int argc, char **argv)
{
    *dataBase = new string("dataBase.txt");
    input(&dataBase);
    delete dataBase;
    return 0;
}
Voici mon input.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#ifndef INPUT_H
#define INPUT_H
#include <string>
void input(std::string *dataBase);
#endif
Voici mon input.cpp :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "input.h"
using namespace std;
vector <string> matrix;
void input(string *dataBase)
{
    string command,dump;
    *dataBase.open(*dataBase.c_str(),ios::in);
    while (!dataBase.eof())
    {
    *dataBase >> command;
        if(!dataBase.eof())
        {
            if(command=="#")
            {
                getline(dataBase,dump); cout << dump << endl;
            }
            if(command=="matrix");
            {
                  string MatrixName;
                  double LatticeParameter, AtomicVolume;
                  cout << "Matrix command invoqued"  << endl;
                  command >> MatrixName;
                  command >> LatticeParameter;
                  command >> AtomicVolume;
                  *matrix = new Matrix(MatrixName, LatticeParameter, AtomicVolume);
                  matrix.push_back(_matrix);
                  cout << MatrixName << endl;
                  cout << matrix.size() << endl;
            }
            if(command=="precipitate");
            {
                   //ici je veux mettre le nom et nombre dans un vecteur
                   //mais ca sera comme au dessus pour matrix
            }
            if(command=="element");
            {
                    //ici je veux mettre le nom et nombre dans un vecteur
                   //mais ca sera comme au dessus pour matrix
            }
        }
}
    dataBase.close();
}
mais franchement je suis perdu