csv datei nach einem wert suchen



  • hi, ich hab eine Excel datei, die ich als csv gespeichert habe. Nun möchte ich jede Spalte in einem Array speichern. das heißt es soll die erste zeile bis erste semikolon lesen und in einem array speichern, dann weiter lesen bis zum zweiten und in einem anderen speichern usw. bis die zeile zu ende ist. Dann die zweite Zeile genau so. Wie kann ich so was machen?

    THX



  • http://www.cplusplus.com/faq/sequences/strings/split/

    In der .cvs Datei sieht eine Zeile ungefähr so aus:

    Das;Ist;Eine;Testzeile;

    Als erstes solltest du die komplette Zeile auslesen und in einem string speichern. Auf diesen string führst du ein Split aus(mehr Infos im Link). Damit machst du aus deinem einzelnen string eine Liste von Werten.



  • Edit: Doppelpost.



  • Hi,
    also die Datei ist schon vorhanden und so lese ich sie aus:

    int main(){
    	ifstream dateilesen;
    	string filename_lesen = "datei.csv";
    	dateilesen.open(filename_lesen.c_str(), ios_base::in);
    
    	if(!dateilesen){
    		cerr <<" datei kann nicht geöffnet werden"<<endl;
    		getchar();
    		return -1;
    	}
    	char zeichen;
    	while(!dateilesen.eof()){
    		dateilesen.get(zeichen);
    
    	}
    	dateilesen.close();
    	getchar();
    
    	return 0;
    }
    

    ich verstehe nicht wie ich dann diesen Vector benutzen soll. Sorry ich programmiere eigentlich nicht mit C++ 😞 daher kenn ich mich net so aus.



  • Edit: Autsch, OP nicht richtig gelesen.

    Nun möchte ich jede Spalte in einem Array speichern.



  • Dann musst du wohl oder übel über deine favorisierte Suchmaschine nutzen und herausfinden, wie du mit std::vector arbeitest.



  • freaky schrieb:

    Dann musst du wohl oder übel über deine favorisierte Suchmaschine nutzen und herausfinden, wie du mit std::vector arbeitest.

    Oder, noch ein Vorschlag: Er besorgt sich ein gutes Grundlagenbuch. 🙂 💡



  • Edit: Schon wieder Doppelpost...



  • sowas ähnliches hab ich mit Java schon gemacht, und es klappt auch sehr gut un schwer ist es auch net. aber in C++ habe ich meine Schwierigkeiten, alles nachzuvollziehen. Und ein Buch hab ich auch auch.



  • guguli schrieb:

    hi, ich hab eine Excel datei, die ich als csv gespeichert habe. Nun möchte ich jede Spalte in einem Array speichern.

    Hi guguli,

    Das ist grundsätzlich keine gute Idee. Besser Du baust Dir eine Struktur, deren Member den Werten der verschiedenen Spalten genau einer Zeile entsprechen. Anschließend füllst Du damit einen std::vector<DeineStruktur> .

    Angenommen, eine Zeile sieht so aus:

    Kommentar egal;-12.89;0.09;17
    

    dann könnte die Struktur so aussehen:

    struct Foo {
        std::string comment;
        double x, y;
        int id;
    };
    

    in diese solltest Du dann jede Zeile einlesen. Spalten, die Du nicht benötigst, kannst Du mit ignore überspringen.

    Tipp: suche hier im Forum nach 'csv'.

    Gruß
    Werner



  • guguli schrieb:

    sowas ähnliches hab ich mit Java schon gemacht, und es klappt auch sehr gut un schwer ist es auch net. aber in C++ habe ich meine Schwierigkeiten, alles nachzuvollziehen. Und ein Buch hab ich auch auch.

    Es reicht nicht, das Buch zu haben. Der nächste Schritt wäre, das Buch aufzuschlagen. Fange am besten vorne an und lies jede Seite aufmerksam durch.

    Deine Frage sieht wirklich so aus, als könntest Du praktisch kein C++ und erwartest, dass hier Dir jemand die Arbeit abnimmt und den Code postet. Aber so funktioniert das in der Regel nicht.

    Ich würde einen stateful Parser schreiben. Bzw. ich habe mal einen Parser für CSV geschrieben, so dass ich das nie mehr machen muss, da es zu meiner Toolbox gehört. Aber einen stateful Parser ist aber nicht unbedingt was für Anfänger.


Anmelden zum Antworten