Is there a way to diff files from C++?

▼魔方 西西 提交于 2019-11-27 05:22:13

问题


I'm looking for a C or C++ diff library. I know I can use the Unix diff tool in combination with system or exec, but I really want a library. It would be handy if the library could perform patches as well, like the Unix patch tool.


回答1:


I think I've found a good solution, finally:

The DTL - Diff Template Library --- Tutorial

It supports patch. I had to type "diff.cpp" into Google to find it. Hopefully it works!




回答2:


It seems like the Google Diff, Match and Patch libraries are what you need.




回答3:


This is an implementation of a "solution to SES/LCS with the Hirschberg linear space refinement as described in the following publication":

E. Myers, ``An O(ND) Difference Algorithm and Its Variations,'' Algorithmica 1, 2 (1986), 251-266. http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps

Found it on the Wikipedia page on diff.

That's only for finding a diff though, not applying it as a patch. I think that application of a patch is actually a harder problem; due to the risk of conflicts. It would need some form of user-controlling feedback mechanism, to resolve conflicts.




回答4:


There is one that is part of Mercurial. It exists as some C code that's designed as a Python extension, but it could probably be extracted pretty easily. I believe it can also do binary diffs.

The relevant .c files are mercurial/bdiff.c, mercurial/mpatch.c and possibly mercurial/diffhelpers.c.




回答5:


Subversion includes a library libsvn_diff.




回答6:


Also pretty much unfindable in Google, it turns out that Gnulib has a diff module. This one seems sufficient for what I wanted a diff library for. It doesn't seem to have a patch module, though.



来源:https://stackoverflow.com/questions/1451694/is-there-a-way-to-diff-files-from-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!