是否有任何开源项目或库,它能够以GNU diff的方式比较两个字符串,但不启动外部进程,而是使用内存缓冲区文件?
那就是看起来像这个假设的功能:
comparison_result* diff(wchar_t *text1, wchar_t *text2);
我看了GNU diffutils' source code,希望它会在内部使用这样的函数,但不幸的是,它正在逐块读取文件,而不是将它们读入内存缓冲区并且比较一下。代码本身相当复杂,我无法理解它,更不用说重写了它。
开源项目中是否有这样的功能?
答案 0 :(得分:2)
diffutils程序/函数的源代码确实有点难以适应这个目的,因为它在比较算法中使用了大量的文件部分缓冲。
然而,diff实现的功能并不是真正的革命性或难以复制。它已在其他图书馆中复制。例如,谷歌代码中的google-diff-match-patch库,它的API有点粗糙,但似乎可以完成这项工作。
另一种可能性是将数据写入内存中的FILE*
缓冲区,然后使用diffutils函数,读取和写入内存缓冲区。您可以使用fmemopen创建此类缓冲区。
答案 1 :(得分:1)