我正在寻找C或C ++差异库。我知道我可以将Unix diff
工具与system
或exec
结合使用,但我真的想要一个库。如果库可以执行补丁也很方便,比如Unix patch
工具。
答案 0 :(得分:22)
我想我终于找到了一个很好的解决方案:
DTL - Diff Template Library --- Tutorial
它支持补丁。我不得不在Google中键入“diff.cpp”来查找它。希望它有效!
答案 1 :(得分:11)
似乎Google Diff, Match and Patch libraries就是你所需要的。
答案 2 :(得分:3)
This是“使用Hirschberg线性空间细化的SES / LCS解决方案的实现,如以下出版物中所述”:
电子。迈尔斯,“一个O(ND)差异 算法及其变化,'' Algorithmica 1,2(1986),251-266。 http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps
在Wikipedia page on diff上找到它。
这只是为了找到差异,而不是将其用作补丁。我认为补丁的应用实际上是一个更难的问题;由于存在冲突的风险。它需要某种形式的用户控制反馈机制来解决冲突。
答案 3 :(得分:3)
有Mercurial的一部分。它存在于一些设计为Python扩展的C代码中,但它很可能很容易被提取出来。我相信它也可以做二元差异。
相关的.c文件为mercurial/bdiff.c,mercurial/mpatch.c,可能还有mercurial/diffhelpers.c。
答案 4 :(得分:2)
Subversion包含一个库libsvn_diff
。
答案 5 :(得分:1)
在Google中也非常不可取,但事实证明Gnulib有一个diff module。这个似乎足以满足我想要的差异库。但它似乎没有补丁模块。