-1

是否有任何开源项目或库能够以GNU diff的方式比较两个字符串,但无需启动外部进程,并且使用内存缓冲区而不是文件?

也就是说,看起来像这个假设函数:

comparison_result* diff(wchar_t *text1, wchar_t *text2);

我查看了GNU diffutils 的源代码,希望它会在内部使用这样的函数,但不幸的是,它正在逐块读取文件,而不是将它们读入内存缓冲区并进行比较。代码本身比较复杂,我也不是很懂,更别说重写了。

开源项目中有这样的功能吗?

4

2 回答 2

3

diffutils 程序/函数的源代码确实有点难以适应此目的,因为它在比较算法期间使用了许多文件的部分缓冲。

但是,diff 实现的功能并不是真正具有革命性或难以重现。它已在其他图书馆中复制。例如,来自 google-code 的google-diff-match-patch库,它的 API 有点粗糙,但似乎可以胜任。

另一种可能性是将数据写入内存FILE*缓冲区,然后使用 diffutils 函数读取和写入这些内存缓冲区。您可以使用fmemopen创建此类缓冲区。

于 2013-02-15T16:29:22.507 回答
1

您可以参考libmba,其 diff 源代码位于http://www.ioplex.com/~miallen/libmba/dl/src/diff.c

于 2013-02-15T16:44:43.263 回答