2009-09-20 6 views
25

Szukam biblioteki diff C lub C++. Wiem, że mogę używać narzędzia Unix diff w połączeniu z system lub exec, ale naprawdę chcę mieć bibliotekę. Byłoby to przydatne, gdyby biblioteka mogła również wykonywać łatki, takie jak narzędzie Unix patch.Czy istnieje sposób na różnicowanie plików z C++?

+0

Wydaje mi się, że biblioteka diff byłaby dość powszechna, ale Google jeszcze nie dostarczył dobrej odpowiedzi. –

+0

[Podano doskonałe podejście do C/C++ w podobnym poście.] (Https://stackoverflow.com/questions/42377443/diff-compare-two-files-by-file-descriptor-fd-instead-of- nazwa-pliku/42380790 # 42380790) – DevNull

Odpowiedz

21

Chyba znalazłem dobre rozwiązanie wreszcie:

DTL - Diff Template Library --- Tutorial

Obsługuje poprawki. Musiałem wpisać "diff.cpp" w Google, aby go znaleźć. Mam nadzieję, że to działa!

+1

To działało świetnie dla mnie! – KeatsKelleher

11

Wydaje się, że Google Diff, Match and Patch libraries to, czego potrzebujesz.

+0

Eh, ale wersja C++ tej biblioteki jest zależna od Qt. Potrzebuję biblioteki typu diff/patch dla aplikacji nie-GUI. –

+1

Qt ma części inne niż GUI i może być używany w aplikacji konsolowej. – Bill

+11

Qt jest dużą zależnością od biblioteki, której nie chcę mieć. Dlaczego autor nie użył STL? –

3

This jest realizacja „roztwór do SE/LCS z Hirschberg liniowego udoskonalenie przestrzeni, jak opisano w następującej publikacji:”

E. Myers, '' O (na ND) Różnica Algorytm i jego wariacje ", Algorithmica 1, 2 (1986), 251-266. http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps

Znaleziono go na Wikipedia page on diff.

To tylko w celu znalezienia pliku różnicowego, nie stosując go jako poprawki. Myślę, że aplikacja łatki jest w rzeczywistości trudniejszym problemem; ze względu na ryzyko konfliktów. Aby rozwiązać konflikty, potrzebowałaby pewnej formy mechanizmu zwrotnego kontrolującego użytkownika.

+0

To jest najlepsza odpowiedź, ale do tej pory bardzo chciałbym również biblioteki łatek. Poczekam trochę, żeby sprawdzić, czy ktoś jeszcze ma odpowiedź. –

+0

Plik 'diff.c' połączony na początku wydaje się zniknąć. (Wciąż jest w indeksie Google chociaż ...) – Tanuva

+0

@Tanuva Huh? Mi to pasuje. – unwind

1

także dość dużo unfindable w Google, okazuje się, że Gnulib ma diff module. Ta wydaje się wystarczająca dla tego, czego chciałem dla biblioteki diff. Wydaje się jednak, że nie ma modułu łatki.

Powiązane problemy