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

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

我想我找到了一个很好的解决方案,最后:

DTL – 差异模板库 — 教程

它支持补丁。 我必须在Google中键入“diff.cpp”才能找到它。 希望它有效!

看起来Google Diff,Match和Patch库就是您所需要的。

这是“具有Hirschberg线性空间细化的SES / LCS解决方案的实现,如以下出版物中所述”:

E.Myers,“一种O(ND)差分算法及其变化”,Algorithmica 1,2(1986),251-266。 http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps

在差异的维基百科页面上找到它。

这只是为了找到差异,而不是将其用作补丁。 我认为补丁的应用实际上是一个更难的问题; 由于存在冲突的风险。 它需要某种forms的用户控制反馈机制来解决冲突。

Subversion包含一个库libsvn_diff

有一个是Mercurial的一部分。 它存在于一些设计为Python扩展的C代码中,但它很可能很容易被提取出来。 我相信它也可以做二元差异。

相关的.c文件是mercurial / bdiff.c , mercurial / mpatch.c ,可能还有mercurial / diffhelpers.c 。

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