lecture fichier et classement des données
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:
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:
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:
1 2 3 4 5
| #ifndef INPUT_H
#define INPUT_H
#include <string>
void input(std::string *dataBase);
#endif |
Voici mon input.cpp :
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 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