Я ищу библиотеку различий C или C++. Я знаю, что могу использовать инструмент Unix diff
в сочетании с system
или exec
, но мне очень нужна библиотека. Было бы удобно, если бы библиотека также могла выполнять исправления, как инструмент Unix patch
.
Есть ли способ отличить файлы от C++?
Ответы (6)
Я думаю, что нашел хорошее решение, наконец:
DTL — библиотека шаблонов различий --- Учебник
Он поддерживает патч. Мне пришлось ввести «diff.cpp» в Google, чтобы найти его. Надеюсь, это работает!
Похоже, что вам нужны библиотеки Google Diff, Match и Patch. необходимость.
Это реализация "решения SES/ LCS с уточнением линейного пространства Хиршберга, как описано в следующей публикации:
Э. Майерс, "Алгоритм разности O(ND) и его варианты", Algorithmica 1, 2 (1986), 251-266. http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps
Нашел его на странице Википедии о различиях.
Это только для поиска различий, а не для применения их в качестве патча. Я думаю, что применение патча на самом деле является более сложной задачей; из-за риска конфликтов. Для разрешения конфликтов потребуется какая-то форма механизма обратной связи, контролирующего пользователя.
diff.c
, указанный в начале, исчез. (Хотя он все еще находится в индексе Google...)
- person Tanuva; 24.07.2017
Один из них является частью Mercurial. Он существует в виде некоторого кода C, разработанного как расширение Python, но его, вероятно, можно довольно легко извлечь. Я считаю, что он также может выполнять двоичные различия.
Соответствующие файлы .c: mercurial/bdiff.c, mercurial/mpatch.c и, возможно, mercurial/diffhelpers.c.
Также почти невозможно найти в Google, оказывается, что Gnulib имеет модуль различий. Этого кажется достаточно для того, для чего мне нужна библиотека различий. Однако, похоже, что у него нет патч-модуля.