CSV - Datei in eine Tabelle umwandeln?



  • Hallo Leute,
    ich würde gerne eine CSV-Datei als Tabelle bzw. Spalten wiedergeben.
    Kann mir bitte einer helfen=)

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <stdio.h>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
    
        string name;
        cout <<"Name des Pfades eingeben: ";
        cin >> name;
    
        ifstream datei;
        string zeile;
        datei.open(name.c_str());
    
        if(datei.is_open()) {
    
            int zeilenCounter = 0; 
    
            while(getline(datei, zeile) && zeilenCounter <11) 
            {
    
                cout<< zeile <<endl;
                zeilenCounter++;
    
            }
    
            datei.close(); 
    
        }
        else{
            cerr << "Fehler beim Öffnen!"; 
        }
    
        return 0;
    
    }
    

    weiss nicht was ich hier und wie ergänzen muss....=(
    ich weiss nur das ich mit "setw" arbeiten sollte .....

    bitte um hilfeeeee 🙂
    Gruss Carlos



  • Hallo Carlos,

    es ist schwierig dir zu helfen. Zum einen fehlen dir absolut grundlegende C++-Verständnisse (RAII, Initialisierung (wieso open?)). Jeder der dein Beitrag liest, muss davon ausgehen, dass du praktisch keinen Quellcode verstehen wirst, wenn man dir Hilfe postet.
    Hinzukommt, dass es den Anschein hat, dass du den Quellcode gar nicht selbst geschrieben hast. Wieso sollte jemand die Klammer { mal in eine neue Zeile (nach main) und mal in die Zeile der Anweisung machen (if...). Leute, die ihre Quellcodes selbst schreiben, sind nicht so inkonsistent, und vor allem lassen sie keine 10 Leerzeilen in ihren Quellcodes.

    Und hinzu kommt auch noch, dass du nicht einmal gesagt hast, wie deine CSV Datei aussieht. Welche Daten in welcher Reihenfolge? Welche Datentypen haben die Daten? Wie soll die Ausgabe in der Console dann genau aussehen?

    Du musst unbedingt an deiner Selbständigkeit arbeiten und die Ratschläge umsetzen, die du hier bekommst. Ansonsten sehe ich schwarz für deine Ausbildung bzw. spätestens wenn du Softwareentwicklung in Teams/mit Kunden betreibst.

    So und nun überarbeite deinen Post und sag, was du bis jetzt vom Quellcode verstehst und was du nicht verstehst, etc.



  • out schrieb:

    Wieso sollte jemand die Klammer { mal in eine neue Zeile (nach main) und mal in die Zeile der Anweisung machen (if...). Leute, die ihre Quellcodes selbst schreiben, sind nicht so inkonsistent

    Doch, sowas hab ich schon öfter gesehen. Es gibt durchaus Leute, die die Klammern nach Klassen/Funktionen anders setzen, als nach if/for.



  • Mechanics schrieb:

    out schrieb:

    Wieso sollte jemand die Klammer { mal in eine neue Zeile (nach main) und mal in die Zeile der Anweisung machen (if...). Leute, die ihre Quellcodes selbst schreiben, sind nicht so inkonsistent

    Doch, sowas hab ich schon öfter gesehen. Es gibt durchaus Leute, die die Klammern nach Klassen/Funktionen anders setzen, als nach if/for.

    Ist sogar sehr häufig, siehe auch:https://de.wikipedia.org/wiki/Einr%C3%BCckungsstil#Variation:_Original_K.26R_.2F_Kernel_.2F_Linux_.2F_UNIX_.2F_Stroustrup

    An Carlos: du wirst nicht drum herumkommen, eine von folgenden Varianten zu machen:
    a) feste Breiten nutzen und die Spalten, sofern sie länger sind, abschneiden
    b) erst die maximale Breite pro Spalte ermitteln und dann (maxBreite-aktuelleBreite) Füllzeichen einzufügen (siehe z.B. http://www.cplusplus.com/reference/iomanip/setw/)



  • So habe ich es in der Uni von meinem Prof. gelernt;)

    okay gut alles klar danke dir=) hat geklappt 👍



  • Ich drücke es mal anders aus....Ich will das er mir meine CSV-Datei "geordnet" wiedergibt 😃


  • Mod

    Carlos_Hafensänger schrieb:

    Ich drücke es mal anders aus....Ich will das er mir meine CSV-Datei "geordnet" wiedergibt 😃

    Geordnet wonach? Hast du überhaupt das Einlesen inzwischen gelöst? Wo liegt dein Problem beim Sortieren?

    Ich kann meine Vorredner voll verstehen. Alleine Die Art, wie du hier Fragen stellst, macht offensichtlich, dass du wohl keine Antwort verstehen würdest und du höchstwahrscheinlich auch gar nicht an einer Erklärung oder Lösung interessiert bist, sondern einfach nur möchtest, dass jemand deine Hausaufgaben macht. Und selbst dafür stellst du deine Fragen schlecht, denn um diene Hausaufgaben zu lösen, müsste man ja erst einmal die Aufgabe kennen.



  • #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <stdio.h>
    #include <iomanip>
    #include <string.h>
    
    using namespace std;
    
    int main()
    {
        string name;
        cout <<"Name des Pfades eingeben: ";
        cin >> name;
        ifstream datei;
        string zeile;
        datei.open(name.c_str());
        int width = 5;
    
        if(datei.is_open()) {
    
            int zeilenCounter = 0; 
    
            while(getline(datei, zeile) && zeilenCounter <11) //gibt mir die ersten zehn Zeilen der CSV wieder.
            {
                cout<<setw(width);
                cout<< zeile <<endl;
                zeilenCounter++;
            }
    
           datei.close(); //datei wird wieder geschlossen
    
        }
        else{
            cerr << "Fehler beim Öffnen!"; //gibt diese meldung wieder, falls datei geschützt ist.
        }
        return 0;
        }
    

    hier nochmal mein code mit einer kleinen Veränderung.

    1.ich bin neu und Anfänger, also deswegen nicht direkt urteilen bitte;) danke.
    ich bitte lediglich nur um Hilfe und nicht um Belehrungen. Glaube dafür meldet man sich hier auch an!

    2.Ein Kommilitone hat gemeint das ich jetzt nur noch die Zeilen aufteilen muss
    in meiner while schleife

    While(...){
    splitZeile
    forEachColumn{
    cout<<setw(width)<<spalte[i];
    }
    cout<<endl;
    }

    so in der Art.
    Hat er da recht?



  • Carlos_Hafensänger schrieb:

    Hallo Leute,
    ich würde gerne eine CSV-Datei als Tabelle bzw. Spalten wiedergeben.

    Carlos_Hafensänger schrieb:

    Ich drücke es mal anders aus....Ich will das er mir
    meine CSV-Datei "geordnet" wiedergibt 😃

    Was denn nun. Willst du die formatiert auf der Konsole ausgeben, dass es wie eine Tabelle aussieht, willst du die sortieren (wenn ja nach was) oder beides?

    Carlos_Hafensänger schrieb:

    2.Ein Kommilitone hat gemeint das ich jetzt nur noch die Zeilen aufteilen muss
    in meiner while schleife

    While(...){
    splitZeile
    forEachColumn{
    cout<<setw(width)<<spalte[i];
    }
    cout<<endl;
    }

    so in der Art.
    Hat er da recht?

    Was meinst du? Hat er damit recht? Erreichst du mit dem Pseudocode, was du möchtest?

    P.S. Nutz bitte die C++ Code Tags (rechts neben den einfachen Code Tags).



  • Genau , ich möchte einfach nur das die Konsole es mir Formatiert ausgibt, so dass es aussieht wie eine Tabelle....mehr nicht 👍



  • Bisher liest du immer zeilenweise ein und gibst die wieder unverändert aus.
    Du mußt aber spaltenweise einlesen, z.B. mittels

    while(getline(datei, wert, ',')) // ',' ist das Trennzeichen
    

    Nun kannst du die einzelnen Spaltenwerte per

    cout << setw(width) << wert <<endl;
    

    ausgeben.
    Die Herausforderung für dich ist dann noch das Erkennen einer Zeile (wenn du die Anzahl der Spalten kennst, dann kannst du zwei verschachtelte Schleife verwenden).



  • Hat alles geklappt 😃
    danke Leute 🙂 👍


Anmelden zum Antworten