Bonjour a tous,
Je suis débutante en C++ et je trouve des problèmes pour manipuler un fichier de données.
J'ai un fichier qui contient des données de la forme :
  2    3
  10   10   10

   0   3 2 3 7 
   2   2 6 4 
Ces différentes valeurs doivent être classés dans des variables différentes. Par exemple à partir de la ligne 3 jusqu'à la fin (pour des fichiers de tailles plus grande également) je dois lire ces lignes une a une et stocker la première valeur de chaque ligne dans un tableau Dactiv[i] et pour le reste je dois les classer dans une matrice que je déclare en tant que vector <vector <int> > (notons que le tableau possède n lignes mais le nombre de colonnes pour chaque ligne est différent). Est ce que c'est possible de le faire en C++?

J'ai fait un bout de code en C++ mais qui me donne des valeurs erronées stockées dans les variables, le code est le suivant:
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
    int n; 
    vector <int> NBsucc; 
    vector <int> succ; 
    vector <vector <int> > Successeurs; 
    int R; 
    vector <int> ri;
    vector <int> Dactiv; //vecteur qui contient la première case de chaque ligne a partir de la ligne 3
 
    filebuf fichier; 
    filebuf *ouvert=fichier.open("Pat5.rcp", ios_base::in); 
    if(!ouvert)
    {
        cout<<"Probleme d'ouverture du fichier "<< endl;
        exit(1);
    }
    istream inFile(&fichier); 
 
    //Lire 1er element de la 1ere ligne du fichier 
    inFile >> n; 
    Dactiv.resize(n);
    NBsucc.resize(n);
 
    //Lire 2eme element de la 1ere ligne du fichier (nombre de ressources)
    inFile >> R; 
    ri.resize(R);
 
    // 2eme ligne
    for(int j = 0; j < R; j++)
        inFile >> ri[j]; 
 
    /* Dans une boucle for de la 3eme ligne jusqu’à la fin */ 
    for(int k=0; k < n; k++)
     {
        // 1ere case de chaque ligne dans le tableau Dactiv
        inFile >> Dactiv[k]; 
        //2eme case de chaque ligne dans un tableau NBsucc
        inFile >> NBsucc[k];
        //allocation memoire pour la matrice Successeurs
        Successeurs.resize(n);
        for(int i = 1; i < NBsucc[k]; i++)
            Successeurs[i].resize(NBsucc[k],false);
 
        //de 3eme case a la fin 
        for(int j = 0; j < NBsucc[k]; j++)
            inFile >> Successeurs[k][j] ; // les successeurs j de tous les nœuds k
    }
Les valeurs des tableaux Dactiv doivent être 0 et 2 celles de NBsucc doivent être 3 et 2. Mais le résultat n'affiche pas les bonnes valeurs?
C'est quoi le problème?
Merci