Auslesen einer Tabelle und speicher in einem arrray
-
Hallo
Folgendes Problem. Ich würde gerne eine Tabelle (.txt, Spalten durch tabs getrennt) einlesen und in einem zweidimensionalen Array speichern. Leider weiss ich zu Beginn nicht, wieviele Zeilen und Spalten in der Tabelle sind. Zudem kann es sein, dass die Anzahl Spalten von Zeile zu Zeile unterschiedlich sind. Ich glaube, mit folgendem Code müsste ich die einzelnen Zeilen in den vector values speicher können. Leider weiss ich aber zu dieser Ziet noch nicht, wieviele Zeilen noch kommen werden und ob in weiteren Zeilen die Anzahl Spalten grösser sein wird.
infile.open("D:\\petersp\\Master-Arbeit DLD\\PF_2D\\properties_C35.txt", ios::in); while(!infile.eof()) { getline(infile, s); size_t length = s.length(); int i=0; size_t pos = s.find("\t"); vector<double> value; while(pos != s.npos); { string strpart = s.substr(1, pos-1); s = s.substr(pos+1,length); value.push_back(strtod(strpart.c_str(), NULL)); length = s.length(); i++; } } infile.close();Kann ich im Vorfeld die Tabelle auf Anzahl Zeilen und maximal auftretende Spaltenzahl überprüfen?
Ich würde gerne so etwas haben:
double Mat[Anzahl Zeilen][max Anzahl Spalten] infile.open("D:\\petersp\\Master-Arbeit DLD\\PF_2D\\properties_C35.txt", ios::in); while(!infile.eof()) { getline(infile, s); size_t length = s.length(); int i=0; size_t pos = s.find("\t"); vector<double> value; while(pos != s.npos); { string strpart = s.substr(1, pos-1); s = s.substr(pos+1,length); value.push_back(strtod(strpart.c_str(), NULL)); length = s.length(); for(int j=0, j<value.length, j++) { Mat[i][j] = value[j]; } i++; } }Danke für jede Antwort
-
pitaz schrieb:
Kann ich im Vorfeld die Tabelle auf Anzahl Zeilen und maximal auftretende Spaltenzahl überprüfen?
Ohne die Datei gelesen zu haben? Das dürfte schwer werden, da dein Programm dann hellsehen müsste

Verpacke doch einfach zwei Container ineinander. Beispiele:
`std::vector<std::vector<double> > Matrix1;std::deque<std::deque<double> > Matrix2;
std::list<std::list<double> > Matrix3;`
Welche Kombination dir lieber ist, muss du selber entscheiden.Grüssli