c++ aufgabe - wie anfangen???? :(
-
SeppJ schrieb:
in >> p.m_nr >> std::ws; getline(in, p.m_name, ','); in >> std::ws; getline(in, p.m_vorname, ';' ); in >> p.m_geschlecht >> klammer; getline(in, p.m_kenntnisse, ')'); return in;Ist das jetzt viel besser?
Ja, ist es. Es geht auch nicht darum, den Rückgabewert der Einlesefunktionen nicht zu verwenden, sondern die Funktionsaufrufe zu schachteln bis niemand mehr durchblickt welche Klammer jetzt eigentlich wozu gehört. Von mir aus könnte man das operator >> noch in getline packen, aber die getline untereinander verschachteln? Lieber nicht.
-
Firefighter schrieb:
@Werner: Also ich find dein Code ja super, aber würde diese Zeile nicht gegen eine der Prinzipien aus "Effective STL" von Scott Meyers verstoßen:
return getline( getline( getline( in >> p.m_nr >> std::ws, p.m_name, ',' ) >> std::ws, p.m_vorname, ';' ) >> p.m_geschlecht >> klammer, p.m_kenntnisse, ')');Ja - Du hast Recht. Dieser Code verstößt gegen Item 47 "Avoid producing write-only code". Dort steht unter anderen
Scott Meyers schrieb:
Whether code is write-only depends on who's reading it.
Unter diesem Aspekt (hhjoni liest ihn) ist das definitiv ein Verstoß gegen diese Regel.
Die Variante von SeppJ ist in dieser Hinsicht besser; und für hhjoni bleiben ohnehin sicher genug Fragen offen.:xmas2: Werner
-
@ Werner: Touché

-
.. was haltet Ihr denn von so was?
// --- Einlesen einer Person return getline( getline( getline( // Format: // Pers.# Name_______, Vorname_______; m/w (________Kenntnisse_______) in >> p.m_nr >> std::ws, p.m_name, ',' ) >> std::ws, p.m_vorname, ';' ) >> p.m_geschlecht >> klammer, p.m_kenntnisse, ')');:xmas2:
-
:D:D Grad musst ich etwas lachen

Schöne Lösung, aber sagt man nicht das Code so geschrieben werden soll das man ohne Kommentare arbeiten kann? Jeder Kommentar im Code deutet darauf hin das man hier etwas nicht ordentlich genug "codiert" hat

Aber dennoch, gekonnte Umformulierung des Codes.
-
danke schon mal
hab schon bisschen rumprobiert aber bin noch nicht zu einer lösung gekommen... schrecklich, aber ich probier weiter 
-
Werner Salomon schrieb:
.. was haltet Ihr denn von so was?
In dem Fall musste ich alle Kommentare entfernen um zu verstehen, was die getlines da eigentlich machen. Jetzt ist zwar das Dateiformat etwas klarer, aber was der Code selbst bedeutet wurde noch weiter verdeckt.
(ja, ich habe zuerst Seite 2, dann Seite 1 gelesen)
Was den Code noch etwas schwieriger zu verstehen macht ist, dass getline meistens eingesetzt wird um (wie der Name bereits nahe legt) einzelne Zeilen der Datei auszulesen. Semantisch wird das hier ganz krumm. Natürlich geht es, aber der Code spricht nicht mehr wirklich.
-
ich raff das nicht
-
hhjoni schrieb:
ich raff das nicht
Aber raffst du:
in >> p.m_nr; in >> std::ws; getline(in, p.m_name, ','); in >> std::ws; getline(in, p.m_vorname, ';' ); in >> p.m_geschlecht; in >> klammer; getline(in, p.m_kenntnisse, ')'); return in;?
Oder verstehst du ganz allgemein nicht, was Werner da gemacht hat (also mit Klassen, Operatorüberladung, Iteratoren und Algorithmen)?
-
für mich ist es ganz schwer diese aufgaben zu lösen. ich kenn wohl einzelne funktionen aber das war es auch schon. das ist überhaupt nicht mein ding.... ich glaub ich brauch jemanden der mir das schritt für schritt erklärt
... habs nun
