我正在寻找一个C或C++差异库。我知道我可以使用Unix diff
工具与system
或exec
结合使用,但我真的很想要一个库。如果图书馆也可以执行补丁,比如Unix patch
工具,那将很方便。有没有办法区分C++文件?
回答
我想我已经找到了一个很好的解决方案,最后:
的DTL - Diff Template Library --- Tutorial
支持补丁。我必须在Google中输入“diff.cpp”才能找到它。希望它有效!
这对我很好! – KeatsKelleher 2011-11-02 10:26:08
看起来好像Google Diff, Match and Patch libraries是你需要的。
Eh,但该库的C++版本依赖于Qt。我需要一个非GUI应用程序的diff/patch库。 – 2009-09-20 23:46:50
Qt具有非GUI部件,可以在控制台应用程序中使用。 – Bill 2009-09-24 17:03:33
Qt是我不想拥有的大型库依赖项。为什么作者没有使用STL? – 2009-09-29 20:48:52
This是 “溶液到SES/LCS与如以下公报中记载的海森堡线性空间求精” 的实现:
E.斯堡,``的O(ND)差分 算法及其变体“,算法1,2(1986),251-266。 http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps
这只是为了找到差异,而不是将其作为补丁应用。我认为补丁的应用实际上是一个更难的问题;由于冲突的风险。它需要某种形式的用户控制反馈机制来解决冲突。
Subversion包含一个库libsvn_diff
。
有一个是Mercurial的一部分。它作为一些被设计为Python扩展的C代码存在,但它可能很容易被提取出来。我相信它也可以做二进制差异。
相关的.c文件是mercurial/bdiff.c,mercurial/mpatch.c和可能的mercurial/diffhelpers.c。
在谷歌也很难找到,结果Gnulib有diff module。这似乎足以满足我想要差异库的需求。但它似乎没有补丁模块。
- 1. 有没有办法使用C#压缩分页的.tiff文件?
- 2. 有没有办法确定Azure表中的现有分区?
- 3. 我有VS C++ Express。有没有办法创建.DEF文件?
- 4. Visual Studio没有区分C头文件和C++头文件
- 5. 有没有办法切换JavaScript文件?
- 6. 有没有办法调试plist文件?
- 7. 有没有办法解压JavaScript文件?
- 8. 有没有办法保护iCalender文件?
- 9. 有没有办法测试CSS文件?
- 10. 有没有办法让C#中的所有文件名都没有例外?
- 11. 有没有办法加载关于分辨率的CSS文件?
- 12. 有没有办法获得部分上传的文件?
- 13. 在Oracle中有没有办法让列不区分大小写?
- 14. 有没有办法区分一个案例类和一个Tuple?
- 15. 有没有办法区分哪个UIPopOver被解雇?
- 16. 有没有办法区分房间领导?
- 17. 有没有办法区分一个GUID和随机数?
- 18. 有没有办法在Cloudera黑斑羚上显示分区?
- 19. 有没有办法在vim中区分两个寄存器?
- 20. 有没有办法让rfind()不区分大小写?
- 21. 有没有办法区分列表中的项目?
- 22. 有没有办法强制iOS模拟器区分大小写?
- 23. KDB/Q有没有办法检查分区表的完整性?
- 24. 有没有办法如何区分使用doxygen的枚举组?
- 25. 有没有办法让Perl标量不区分大小写?
- 26. 有没有办法使localizable.strings不区分大小写
- 27. PHP:有没有办法调用不区分大小写的substr_count()?
- 28. 有没有办法监控c#文件的访问?
- 29. 有没有办法解析serializeJSON文件在目标C
- 30. 有没有办法在C#中播放CCITT u-Law .wav文件?
在我看来,差异库是相当普遍的,但谷歌尚未提出一个很好的答案。 – 2009-09-21 19:28:27
[在类似的帖子中为C/C++提供了一个很好的方法。](https://stackoverflow.com/questions/42377443/diff-compare-two-files-by-file-descriptor-fd-instead-of-文件名/ 42380790#42380790) – DevNull 2017-02-22 22:53:33