2009-08-12 6 views
0

Was ist der beste Weg, um diese Informationen aus einer Datei für jede Zeile zu erhalten?Dateiinformationen in Variablen importieren?

die Textdatei sieht wie folgt aus

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

Also muss ich aus den Informationen erhalten Linie 1 (1 E) setzen 1 in eine Variable und dann E in eine andere. Das Gleiche gilt für den Rest der Zeilen, aber einige haben eine andere Anzahl von Elementen, die ich nicht verstehe.

+0

Um Ihnen eine angemessene Hilfe zu geben, müssen wir die Bedeutung der Zahlen und Buchstaben in der Datei kennen. Da die Datensätze unterschiedlich lang sind, kann es nicht nur ein generischer Prozess sein, der unabhängig von der Bedeutung der Daten ist. –

+2

Sieht aus wie Hausaufgaben. –

+0

Ihre Beobachtung ist ungefähr so ​​gut wie Ihre Antwort –

Antwort

1

Sie werden wahrscheinlich einen Vektor von Vektoren benötigen.

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

Der innere Vektor enthält jedes Wort in einer Zeile

Der äußere Vektor Jede Zeile enthält.

Lesen Sie jede Zeile in der Datei, tokenise der Linie, fügen jedes Token an den inneren Vektor, fügen Sie den Vektor für die Worte an den Vektor für jede Zeile

wie eine Hausaufgabe Frage klingt so bin ich nicht gehen um den Code zu veröffentlichen, der zeigt, wie man eine Datei liest, oder die Zeichenkette token

0

Sie können filestream >> intvariable; verwenden, um die Ganzzahl am Anfang der Zeile zu lesen. Sie können dann getline verwenden, um den Rest der Zeile in einen String zu schreiben und ihn dann in ein Array zu teilen oder was auch immer Sie damit machen wollen. Sie waren nicht sehr genau, was genau Sie tun möchten.

1

Eine schnelle/schmutzige Lösung.

#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

Ich hoffe nur, es ist keine Hausaufgabe. Weil ich einen Downvote verdient habe, wenn das der Fall wäre. – AraK

+0

Nice one: Verwenden einer Zeichenfolge pro Zeile. +1 – xtofl

Verwandte Themen