les fichiers en cpp

ScoRPinA

Accro
salam alicom

j ai un fichier ds lequel j ai stockee le code et le nom d un etudiant , j ai utilisee la fct getline() pr lire le fichier ligne par ligne avec une boucle while bien sur mais j ai besoin de stocker le contenu de fichier dans un tableau :confused:
any ideas ??
 

RedEye

- أبو عبدالرحمن -
Membre du personnel
quelque soit le langage, c++ ou autre, le principe est un...
ici tu créé une variable tableau et tu lui affecte ton contenu lu dans le fichier

tu initialise une variable numérique pour l'index du tableau: i = 0;

à l'intérieur de la boucle while, tu affecte le résultat lu de la ligne à ton tableau : tableau = resultat;
puis avant de fermer la boucle while, tu incrémente l'index i : i++;
 

RedEye

- أبو عبدالرحمن -
Membre du personnel
ca marche mnt merciii :eek:
daba ila bghit nrecuperer mot par mot kayna une fct ??
non, seulement dans ton fichier tu dois utiliser un séparateur (point-virgule ou tabulation par exemple), et quand tu récupère la ligne, tu scinde la longue chaine en petits morceaux là ou il y a les séparateurs, ba9sheshi tel9ay fonction en c++ pour ça :p
et là; notre tableau deviendra un tableau multi-dimensionnel...
si le nombre de donnés par ligne est fixe, et pas très long, alors tu n'aura pas besoin de créer un second index j, tu n'aura qu'à attribuer le résultat de la chine scindée e cette façon:
tableau[0] = partie1;
tableau[1] = partie2;
tableau[2] = partie3;

et ceci dans la boucle while
 

ScoRPinA

Accro
voici la fct qui lit le fichier
string ligne;

while ( getline( fichier, ligne ) )
{

// cout << ligne <<endl;
int i=0;
t=ligne;

cout<<t<<endl;
i++;
}
fct qui decoupe une chaine

string l="45;blabla";

istringstream var(l);
string mot;
while (getline( var, mot, ';' ) )
{
cout << mot << '\n';
}

`svp cmment puis je l'adapter pr lire mot par mot le fichier :sad::confused:
 

RedEye

- أبو عبدالرحمن -
Membre du personnel
string ligne;
int i=0; //tu initialise le compteur ici en dehors de la boucle
//on va implémenter les 2 boucles l'une à l'intérieur de l'autre
while ( getline( fichier, ligne ) )
{
istringstream var(ligne);
string mot;
int j=0; //on initialise le compteur de la 2ème dimension du tableau à l'intérieur de la première boucle
while (getline( var, mot, ';' ) )
{
t[j] = mot; //on affecte le résultat mot au tableau
j++; //on incrémente le second compteur
}
i++; //on incrémente le premier compteur
}




essaie avec ça, pour afficher le contenu du tableau; tu refais 2 boucles la première sur le premier index du tableau i, et dedans la deuxième pour le second index j.
 

ScoRPinA

Accro
re :lool:
#include <string>
#include <fstream>
#include <iostream>
#include <conio.h>
#include <limits>
#include <sstream>
using namespace std;
int main()
{
ifstream fichier("fich.txt", ios::in);
if ( fichier ){
int nombre_ligne = 0;
int c;
while ( fichier.ignore( numeric_limits<int>::max(), '\n')){
++nombre_ligne;}

c=nombre_ligne;
string **t;
cout<<" le nombre de lignes de ce fichier est : "<<c<<endl;
string ligne;
int i=0;

while ( getline( fichier, ligne ) )
{
istringstream var(ligne);
string mot;
t=new string *[c];
int j=0;
while (getline( var, mot, ';')) {
t[j] = mot;
j++;

}

i++;
cout<<t[j];
}

fichier.close();
}
else
cerr << "Impossible d'ouvrir le fichier !" << endl;


getch();
}
merci redeye pr votre serviabilite:eek:
 

RedEye

- أبو عبدالرحمن -
Membre du personnel
#include <string>
#include <fstream>
#include <iostream>
#include <conio.h>
#include <limits>
#include <sstream>
using namespace std;
int main()
{
ifstream fichier("fich.txt", ios::in);
if ( fichier ){
int nombre_ligne = 0;
int c;
while ( fichier.ignore( numeric_limits<int>::max(), '\n')){
++nombre_ligne;}

c=nombre_ligne;
string **t;
cout<<" le nombre de lignes de ce fichier est : "<<c<<endl;
string ligne;
int i=0;
t=new string *[c]; //la déclaration première du tableau t doit se faire à l'extérieur de la 1ère boucle juste avant, c correspond à l'index i

while ( getline( fichier, ligne ) )
{
istringstream var(ligne);
string mot;
t = new string *[]; //on déclare chaque ligne comme un tableau dynamique
compt2 = new int *[c] //au cas où les lignes n'ont pas le même nombre de mot, on va stocker un tableau qui comprendra le total des mots de chaque ligne qui correspond à la valeur finale de l'index j
int j=0;
while (getline( var, mot, ';')) {
t[j] = mot;
j++;
}
compt2 = j; //on remplit le tableau à la fin de la 2ème boucle pour avoir la valeur finale de j

i++;
}

//on créé les boucles pour afficher le contenu du tableau "t" maintenant
for (i=0; i<c; i++) {
for(j=0; j<compt2; j++){
cout<<t[j]<<" ";
}
cout<<endl;
}


fichier.close();
}
else
cerr << "Impossible d'ouvrir le fichier !" << endl;

getch();
}
 

RedEye

- أبو عبدالرحمن -
Membre du personnel
[MENTION=46313]ScoRPinA[/MENTION] je suppose que le problème a été résolu
 
Haut