2009-08-12 7 views
0

Quel est le meilleur moyen d'obtenir cette information à partir d'un fichier pour chaque ligne?Récupère les informations sur les fichiers en variables?

le fichier texte ressemble à ce

1 E 
1 P 
1 C 
2 E a 
5 E P C 

donc j'ai besoin pour obtenir les informations de la ligne 1 (1 E) mettre 1 dans une variable puis E dans un autre. La même chose pour le reste des lignes, mais certains ont un nombre différent d'éléments que je ne comprends pas comment faire.

+0

Pour vous donner une aide raisonnable, nous devons connaître la signification des nombres et des lettres dans le fichier. Puisque les enregistrements ont une longueur variable, il ne peut s'agir simplement d'un processus générique indépendant de la signification des données. –

+2

On dirait que les devoirs. –

+0

votre observation est à peu près aussi bonne que votre réponse –

Répondre

1

Vous aurez probablement besoin d'un vecteur de vecteurs.

std::vector<std::vector<std::string> > info; 

Le vecteur interne contient chaque mot dans une ligne

Le vecteur contient chaque ligne externe.

Lisez chaque ligne dans le fichier, tokenise la ligne, ajoutez chaque jeton au vecteur intérieur, ajouter le vecteur pour les mots au vecteur pour chaque ligne

sonne comme une question de devoirs, donc je ne vais pas pour afficher le code indiquant comment lire un fichier ou pour marquer la chaîne

0

Vous pouvez utiliser filestream >> intvariable; pour lire l'entier au début de la ligne. Vous pouvez ensuite utiliser getline pour lire le reste de la ligne dans une chaîne, puis la diviser en un tableau ou faire tout ce que vous voulez faire avec. Vous n'étiez pas très précis quant à ce que vous voulez exactement faire.

1

Une solution rapide/sale.

#include <fstream> 
#include <vector> 
#include <string> 
#include <sstream> 

int main() 
{ 
    using namespace std; 

    typedef pair<size_t, vector<string> > infoPair; 
    typedef vector<infoPair > infoVector; 

    ifstream inputFile("test.txt"); 
    size_t lineNumber = 1; 
    infoVector info; 
    string line; 

    while(getline(inputFile, line)) 
    { 
     stringstream extractor(line); 
     vector<string> symbols; 
     string symbol; 

     while(extractor >> symbol) 
     { 
      symbols.push_back(symbol); 
     } 

     info.push_back(infoPair(lineNumber, symbols)); 
     lineNumber++; 
    } 

    return 0; 
} 
+1

J'espère juste que ce n'est pas un devoir. Cuz, je mérite vraiment une downvote si c'était le cas. – AraK

+0

Nice: en utilisant une chaîne par ligne. +1 – xtofl

Questions connexes