2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben
-
Dieser Beitrag wurde gelöscht!
-
Du solltest versuchen so knapp als möglich zum Ausdruck zu bringen worum es geht und einen Code zeigen, der ebendas versucht zu bewerkstelligen. Möglichst mit einer Fehlermeldung von Compiler oder der Ausgabe vs. der erwarteten Ausgabe. Es wird sich hier mit ziemlicher Sicherheit niemand hinsetzen und versuhen zu verstehen, wie deine bom- oder lager-Dateien aussehen. (Wenn Du das willst dann stelle zumindest eine formale Beschreibung des Dateiformats zur Verfügung.)
-
@apussaih ja, man bastelt sich ein minimal-Beispiel normalerweise für das Forum. Also von der Stelle wo es hapert. Meistens stolpert man dann selbst schon drüber.. Ich werde es mir heute Nachmittag mal genauer angucken. Wenn bis dahin nicht schon Lösungen existieren...
cu
-
@apussaih Was Swordfish verlinkt hat, gibt es auch in einem Thread hier auf Deutsch:
https://www.c-plusplus.net/forum/topic/200753/du-brauchst-hilfeUnter "Den Code reduzieren"
-
@Dravere Ich finde den Artikel auf SO prägnanter. Vielleicht sollte man den Beitrag hier im Forum mal überarbeiten.
-
@apussaih Noch eine Frage: ist das für dich privat oder Arbeit. Oder eine Übungsaufgaben für Ausbildung/Studium. Bei letzteren gibt es oft einen Abgabetermin und eine genaue (Naja) Aufgabenstellung.
-
Dieser Beitrag wurde gelöscht!
-
Was mir auf anhieb aufgefallen ist:
Du prüfst die Existenz der Datei, gibst dann einen Fehlertext aus, machst dann aber trotzdem einfach weiter.
//Übergebe das komplette File und speichere es in den Datensatz void bom2object(std::string path) { // ---------------------Auslesen der bom-Datei ------------------------------------------------- std::ifstream if_bom; if_bom.open(path); // Prüfen, ob Datei existiert if (if_bom.fail()) { std::cout << "Konnte: " << path << " nicht oeffnen\n"; } std::string line; int i = 0; ... }
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@It0101 Ja, ich prüfe zuerst ob die Datei wirklich existiert und wenn ja, dann geht es weiter oder ist das falsch?
Macht es denn einen Sinn dann weiter zu manchen? Habe erhlich noch nicht drüber geguckt. Kann ja sein das auch mit leeren Datensätzen begonnen werden kann...
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@It0101 Ja, ich prüfe zuerst ob die Datei wirklich existiert und wenn ja, dann geht es weiter oder ist das falsch?
Ja, aber du willst ja Daten einlesen. Stellst dann fest, die Datei existiert nicht und versuchst dann trotzdem aus der nicht existierenden Datei Daten einzulesen. Denk mal drüber nach, ob das so Sinn macht
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@It0101 soll ich das Prüfen, ob die Daeti existiert in eine eigene Methode legen?
Und wenn es ie gibt, dann eine neue Methode um sie aufzurufen und dann mit ihr weiter arbeiten?Das musst du wissen. Wenn die Dateien existieren müssen weil das Programm sonst unsinnig wäre bleibt ja nur mit Fehlermeldung auszusteigen...
-
Dieser Beitrag wurde gelöscht!
-
@apussaih
Ne, du gibst ´ne Fehlermeldung aus und machst dann fröhlich weiter als ob nichts passiert wäre.
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@It0101 soll ich das Prüfen, ob die Daeti existiert in eine eigene Methode legen?
Und wenn es ie gibt, dann eine neue Methode um sie aufzurufen und dann mit ihr weiter arbeiten?Dein Quellcode wird aber von anderen geprüft und deren Checkliste wird etwas länger sein und die werden nicht nur darauf schauen ob der Quellcode tut was er soll, was vielleicht durch Zufall sogar passieren könnte.
-
Hier zum Beispiel liest du Daten aus einem String aus. Und das machst du mehrmals hintereinander. Jedes mal fast genau das gleiche mit minimalen Unterschieden. Da wäre es aus meiner Sicht angebracht, wenn du diesen Block in eine Funktion auslagerst und diese dann mehrmals mit jeweils unterschiedlichen Parametern aufrufst.
//Hole Ref end = line.find(';', start); int stringlaenge = end - start; std::string ref = line.substr(start, stringlaenge); //std::cout << "Ref BOM: " << ref << std::endl; bom[i].setRef(ref); start = end + 1;
warum kopierst du hier jedes mal zwei komplette Vectoren?
void compare(std::vector<dataset> bom, std::vector<dataset> lager)
Was ich übrigens gut finde ist, dass du Kommentare schreibst, was viele Anfänger nicht tun.
-
Dieser Beitrag wurde gelöscht!
-
Zunächst mal nimmst du dir deine "parse"-Blöcke schaust sie dir an und überlegst, was die Unterschiede zwischen
//Hole Ref
//Hole Partname
// Hole Value
// Hole Footprintsind und was die gemeinsamkeiten sind.
-
Dieser Beitrag wurde gelöscht!