CSV Datei einlesen...aber wie?
-
Hallo,
und wieder komme ich nicht weiter

Ich muss in meinem ganz einfachen und sehr sehr keinen von Elektro-Studentenhand gefertigen Programm die Double Werte aus einer .csv Datei einlesen und in ein Array Speichern.
Soweit die Theorie

Jetzt finde ich aber leider im Internet keine Anleitung wie ich sowas anstellen kann bzw. das was ich finde sind Codesegmente die mich mehr verwirren als alles andere und die Nerven liegen blank.
Gibt es dazu eine einfache anleitung im Netz oder vielleicht ein gutes Buch?
kann ich da irgenwie auch wie bei den .txt Datein mit ifstream bei?
-
In welcher Formatierung liegt denn das Format vor? ASCII-Standard oder Binär?
-
Hab mal was geschrieben was dir vielleicht weiterhilft.
Der Code liest csv Dateien mit ';' Trennzeichen und variabler Feldanzahl.
Leerzeilen und Leerzeichen werden ignoriert. Um die Interpretierung der Datentypen, sowie anderweitige Fehlerbehandlung müsstest du dich noch kümmern.Es geht sicher noch eleganter, aber du solltest jetzt mal eine Ahnung haben, wie man csv Dateien einlesen kann.
Beispiel Datei:
1.12; 44.789; 987.12; 1 2.13; 45.790; 988.13; 2; 23.40 3.14; 46.791; 989.14; 3#include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> using namespace std; int main() { fstream file("example.csv", ios::in); vector<double> vec; if (!file) { cerr << "Can't open file..." << endl; return 0; } while ( !file.eof() ) // Einlesen bis Dateiende { string row; getline(file, row); // Einlesen einer Zeile if ( !row.empty() ) // Falls Zeile nicht leer { istringstream ss(row); // StringStream zum zerlegen der Zeile string temp; getline(ss, temp, ';'); // Ersten Wert bis zum Trennzeichen // einlesen do { stringstream convert; // StringStream für die Konvertierung convert << temp; // Konvertierung double dtemp; // des String convert >> dtemp; // nach double vec.push_back(dtemp); // und einfügen in den vector temp.clear(); // String leeren getline(ss, temp, ';'); // Nächsten Wert einlesen } while ( !temp.empty() ); // Falls Temp Leer ist, gibt es keine } // neuen Werte in der aktuellen Zeile } file.close(); for ( unsigned i=0; i<vec.size(); i++ ) cout << vec[i] << " "; return 0; }Ausgabe:
1.12 44.789 987.12 1 2.13 45.79 988.13 2 23.4 3.14 46.791 989.14 3
-
Hej,
tausend dank entlich kann ich weiter an dem Programm arbeiten.
das ist genau das was ich brauchte!

vielen vielen dank