[C/C++] Zwei Textdateien vergleichen und Unterschiede ausgeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Characticl D, 29. Juli 2009 .

  1. 29. Juli 2009
    Zwei Textdateien vergleichen und Unterschiede ausgeben

    Hallo Leute,

    ich habe vor 2 Wochen ca. mit C++ angefangen.
    Grundlagen kann ich, nun habe ich von meinem Lehrherr die erste Aufgabe bekommen und bin schon leicht überfordert.

    Ich soll ein Programm schreiben, dass zwei Textdateien miteinander vergleicht und ihre Unterschiede in eine neue Textdatei ausgibt. Dabei soll der Vergleich "intelligent" sein, also nicht Unterschiede wie Leerzeichen oder sowas ausgeben.

    Es geht dabei um Listen mit Kunden- bzw. Auftragsdaten, die im *.csv-Format vorliegen und per Tabulatoren getrennt sind. Die eine Datei ist von vor einem Datenbank-Crash, die andere nach selbigem.

    Dafür soll ich Klassen machen, die für solche Listen stehen können.
    Einlese- und Ausgabemethoden implementieren.
    Vergleichsoperationen entwerfen und einen globalen Vergleich implementieren.

    Kann mir da vielleicht jemand von euch ein bisschen unter die Arme greifen?


    Danke im Voraus.
     
  2. 29. Juli 2009
    AW: Zwei Textdateien vergleichen und Unterschiede ausgeben

    Ich hab mit solchen Sachen leider noch nicht gearbeitet, aber ich glaube es gitb eine Funktion die heist strcmp() oder so, mit der kannst du strings vergleichen, und die liefert dir glaube ich auch die Stelle zurück wo der unterschied ist.
    Da könntest du ja die jeweiligen durch Tab unterschiedlichen Strings miteinander vergleichen, also immer von Tab zu Tab und dann bei unterschieden die Herauskopieren. ( ich glaub zum kopieren von strings gits auch eine C++-Standartfunktion, ich bin mir aber nicht mehr sicher wie die hies und will hier jetzt nix falsches schreiben! ( google kann da weiter helfen ))

    greeze C4rc4ss
     
  3. 30. Juli 2009
    AW: Zwei Textdateien vergleichen und Unterschiede ausgeben

    Hi Characticl,

    Such mal bei Wikipedia nach dem "Levenshtein-Abstand", damit kann man zwei Strings dahingehend vergleichen, dass der kleinstmögliche Abstand gezeigt wird.

    Beispiel:
    bei nem normalen vergleich ist der Abstand zwischen den beiden Strings
    "TestX" und "XTest" 5, da verglichen wird "T ungleich X, e ungleich T, s ungleich e, t ungleich s und X ungleich t.
    Der Levenshteinabstand ist ein Maß, in dem festgehalten wird, wieviele Operationen notwendig sind, um vom einen String zum nächsten zu gelangen, hier ist der abstand also 2:
    Schritt 1: Entferne bei String 2 das X zu beginn,
    Schritt 2: Füge ein X am ende des Strings hinzu.

    ich denke solch ein Abstandsmaß kommt da dann schon günstiger.

    Andererseits, wenn es Direkte Datenbanken-datensätze sind und du auch per datenbank-befehle an die daten kommst, lege ich dir nahe, in SQL nach dem vergleichsoperator "like" zu suchen, da dieser nicht eine komplette zeichenkette sucht, sondern auch "ähnliche" zeichenketten mit in betracht zieht.

    MfG - Idefix!
     
  4. 2. August 2009
    AW: Zwei Textdateien vergleichen und Unterschiede ausgeben

    hi

    Also als erstes schau dir mal an wie man Files öffnet und ausliest. Beim untenstehenden Link sind ein paar Beispiele drinnen ist eigentlich ganz einfach.

    Input/output with files - C++ Tutorials

    Bei dem vergleichen von Strings ist die Frage ob du das per Hand machen musst? Falls gibts in der STL ein equal_to. Ich hab selbst noch nie mit functional/equal_to gearbeitet, könnte aber für deine Zwecke ganz gut zu gebrauchen sein.

    equal_to - C++ Reference

    Aja wenn du fertig bist mit den Files unbedingt alle wieder schließen.

    Wenn du in der STL bei den strings nix findest was dir nützt, bleibt immer noch die Boost. Aber da benötigst du dann halt schon ein wenig mehr Einarbeitungszeit.

    Viel spaß beim Coden
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.