[Hilfe] .csv zu .xml



  • Hallo Helmut,

    ich schließe aus Deinem Beitrag, dass es Du es gut findest, wenn hier jemand etwas lernt.
    what_tf hat eine Frage gestellt:

    what_tf schrieb:

    for( string value, type; getline( getline( input >> ws, value, ',' ) >> ws, type, '\n' ); )
            data[type].push_back( value );
    

    Kann das evlt. mal jmd. erklären ????

    Hier will offensichtlich jemand etwas lernen. Ich würde mir wünschen, dass er dabei von jemanden unterstützt wird. Wie wär's? Freiwillige vor! Wer geht mit gutem Beispiel voran?

    Gruß
    Werner



  • Ich versuchs selber, ganz grob mal..

    for( string value, type; getline( getline( input >> ws, value, ',' ) >> ws, type, '\n' ); )
    data[type].push_back( value );

    value und type verwirrte erst etwas aber sind "Laufvariablen" des Typs string mit komma getrennt...

    Hmmm das getline Kontsrukt ... (input skipt whitespace (?) liest in value... was macht das ',' ... liest evtl. bis zum komma ein ? ) das ganze gibt input stream zurück, liest in type ein bis zum '\n' und gibt wieder zurück und wird mit getline verwurschtelt... ach was weiß ich , da kriegst ja Kopfweh mann 🙂



  • Ja die for-Schleife ist etwas tricky. Also nochmal genau jetzt: Der erste string value, type Teil deklariert einfach nur zwei Variablen. Der ganze Rest ist die Abbruchbedingung der for-Schleife, denn nach dem zweiten Semikolon (da wo man normal die Laufvariable hochzählt) steht nur ein leerer Ausdruck. Also schauen wir uns die Abbruchbedingung mal genauer an:
    getline( getline( input >> ws, value, ',' ) >> ws, type, '\n' )

    Prinzipiell besteht der Teil aus zwei Funktionsaufrufen von getline. Die da beide wären:

    getline(..., value, ',' )
    getline(..., type, '\n' )
    

    Die Argumente für den Stream aus dem die Zeile ausgelesen werden soll habe ich der Übersicht halber mal durch ... dargestellt. Schaut man in die Dokumentation, sieht man das getline so viele Zeichen aus einem Stream ließt bis das Zeichen erreicht ist das man als dritten Parameter angibt. Außerdem gibt getline den Stream als Rückgabewert zurück, wir können also getline verschachteln. Jetzt fehlt eigentlich nur noch der >> ws Teil. Dadurch wird einfach Whitespace aus dem Stream eingelesen und ermöglicht Leerzeichen am Anfang der Zeile und nach dem Komma.

    Das Ganze läuft dann solange bis der Stream das Ende der Datei erreicht hat. Dank einem operator bool kann man Streams einfach auf Fehler testen.



  • Danke 👍 👍



  • WoW klasse wie schnell ihr hier helfen könnt.
    Habt ihr eventuell Tipps für Programmieranfänger?



  • C++ Primer, Der C++ Programmierer UND dieses Weltklasse Forum.



  • what_tf schrieb:

    C++ Primer, Der C++ Programmierer UND dieses Weltklasse Forum.

    Würdest du auch günstigere Bücher bevorzugen?
    Was hällst du/ihr von diesem hier?

    http://www.amazon.de/C-Referenz-Petra-Nootz-Morick-ebook/dp/B004VPVM84/ref=sr_1_5?s=books&ie=UTF8&qid=1434105233&sr=1-5&keywords=c%2Fc%2B%2B+referenz



  • Nun dieses Buch würde ich jetzt schon nicht nehmen weil es C UND C++ ist.
    Das ist wie ein Sprachenbuch, Französisch und Italienisch auf 248 Seiten in 24 Stunden für Dummys. => Würdest du das kaufen ?
    Die beiden genannten Bücher sind schon erste Wahl meiner Ansischt nach, gibt bestimmt auch billigere die evtl. nicht schlecht sind aber Sie sollten sich ja eher auf eine Sprache beschränken.

    Nochdazu ist das von Dir genannte Buch ja eher eine Referenz, ich vermute du suchst aber eher ein Lehrbuch ?



  • what_tf schrieb:

    Nochdazu ist das von Dir genannte Buch ja eher eine Referenz, ich vermute du suchst aber eher ein Lehrbuch ?

    Das ist korrekt ich suche eher nach einem Lehrbuch. In der Schule lerne ich derzeit C++ also wäre es unnötig ein zweisprachiges Buch zu kaufen?



  • Der Primer ist hald englisch, wo du aber über kurz oder lang nicht drum rum kommst. Der C++ Programmierer ist meines Erachtens nach das beste Deutschsprachige Buch .



  • Alles klar vielen Dank!


Anmelden zum Antworten