2012-04-13 10 views
0

Ich habe eine Textdatei mit zwei Spalten und unbekannter Anzahl von Zeilen. Ich möchte also zwei Spalten in einen dynamischen zweidimensionalen Vektor laden. Hier ist, was ich bisher habe, es funktioniert nicht. Wenn das eindimensional ist, weiß ich, wie das geht. Leerraum trennt zwei Spalten. Da ich 2 Spalten lese, brauche ich nur 2 Vektoren der Größe n.Wie lese ich eine Textdatei in einen zwei dynamischen dynamischen Vektor in C++?

vector<vector<string> > component; 
ifstream in_file("/tmp/FW.txt", ios::binary); 

//Check if the file is open 
if(!in_file.is_open()) 
{ 
    cout << "File not opened..." << endl; 
    exit (1); 
} 

for(int i=0; !in_file.eof(); i++) 
{ 
    in_file >> component.push_back(); 
    //component.push_back(in_file); 
} 

Kann mir bitte jemand sagen, wie man das zur Arbeit bringt? Auch wenn Sie mir sagen können, wie man den zweidimensionalen Vektor zurückdruckt, so dass es wie eine Originaldatei aussieht, wäre das auch schön. Dieser Bedarf an Linux (Red Hat)

+0

Wenn Sie ein bekanntes Format, um zu bestimmen, was als column1 und column2, die es einfacher zu analysieren macht. Sie sind nicht 'push_back()' oder die Extraktion '>>' -Operator richtig. Ich würde vorschlagen, auch die Methode 'read()' auf 'std :: ifstream' zu betrachten. – AJG85

+0

Soll das Ergebnis ein Größe-2-Vektor von Größe-n-Vektoren oder ein Größe-n-Vektor von Größe-2 sein Vektoren? –

Antwort

2

Wie wäre es zu laufen:

vector< vector<string> > component; 
ifstream in_file("/tmp/FW.txt"); // N.B., not ios::binary since you're reading text strings 
vector<string> vs(2); 
// Assume they are separated by just whitespace 
while(in_file >> vs[0] >> vs[1]) 
{ 
    component.push_back(vs); 
} 
Verwandte Themen