les fichiers en cpp

Discussion dans 'Programmation' créé par ScoRPinA, 1 Janvier 2013.

  1. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    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 ??
     
  2. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    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++;
     
  3. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    ca marche mnt merciii :eek:
    daba ila bghit nrecuperer mot par mot kayna une fct ??
     
  4. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    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
     
  5. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    thank youu :eek: nmchi nb9chech o nrje3 ;)
     
  6. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    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:
     
  7. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    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.
     
  8. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    aucune erreur mais il affiche rien :confused:
     
  9. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    rani galt lik lta7t a rass tanjra, ajoute le code d'affiche
    wash koulshi khassni nkatbou ana :p
     
  10. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83


    loool rani zdto o walo :sad:
     
  11. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    ashnahowa had le code elli zadti ??
     
  12. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83


    kifma gltili j ai cree 2 boucles pr afficher le tableau makay3tini ni erreur ni bug
     
  13. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    wa warrini had les 2 boucles ki darti lihoum
     
  14. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83
    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:
     
  15. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    #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();
    }
     
  16. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    [MENTION=46313]ScoRPinA[/MENTION] rass tanjra, wa donne un feedback
     
  17. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    [MENTION=46313]ScoRPinA[/MENTION] je suppose que le problème a été résolu
     
  18. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83


    nn pas encore :confused: en fin de compte j ai utilisee les fichiers juste pr stocker les donnees des tableaux et une methode pr afficher le contenu

    merci encore une fois :eek:
     
  19. RedEye

    RedEye - أبو عبدالرحمن - Membre du personnel

    J'aime reçus:
    4153
    Points:
    113
    tu as vu le code que j'ai mis en dernier a rass tanjra ???
     
  20. ScoRPinA

    ScoRPinA Accro

    J'aime reçus:
    393
    Points:
    83


    :lool: ouiii o mafhamtch had les deux lignes :confused:

    t = new string *[];
    compt2 = new int *[c]
     

Partager cette page