有没有办法从C ++中区分文件?

时间:2009-09-20 18:40:23

标签: c++ c diff patch

我正在寻找C或C ++差异库。我知道我可以将Unix diff工具与systemexec结合使用,但我真的想要一个库。如果库可以执行补丁也很方便,比如Unix patch工具。

6 个答案:

答案 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.cmercurial/mpatch.c,可能还有mercurial/diffhelpers.c

答案 4 :(得分:2)

Subversion包含一个库libsvn_diff

答案 5 :(得分:1)

在Google中也非常不可取,但事实证明Gnulib有一个diff module。这个似乎足以满足我想要的差异库。但它似乎没有补丁模块。