-1

GNU diffのように2つの文字列を比較する機能を備えているが、外部プロセスを起動せず、ファイルの代わりにメモリバッファを操作する、オープンソースのプロジェクトまたはライブラリはありますか?

つまり、次のような仮説関数のように見えます。

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

GNU diffutilsのソースコードを調べて、そのような関数を内部で使用することを期待しましたが、残念ながら、ファイルをメモリバッファーに読み込んで比較するのではなく、ブロックごとに読み込んでいます。コード自体はかなり複雑で、書き直すどころか、よく理解できません。

オープンソースプロジェクトにそのような機能はありますか?

4

2 に答える 2

3

diffutilsプログラム/関数のソースコードは、比較アルゴリズム中にファイルの部分的なバッファリングを多数使用するため、この目的に適合させるのは確かに少し困難です。

ただし、diffによって実装される機能は、実際には革新的でも、再現するのも難しいものではありません。そしてそれは他の図書館で複製されました。たとえば、google-codeのgoogle-diff-match-patchライブラリは、APIが少し粗雑ですが、機能しているようです。

もう1つの可能性は、データをメモリ内FILE*バッファに書き込んでから、diffutils関数を使用して、それらのメモリ内バッファの読み取りと書き込みを行うことです。fmemopenを使用してこのようなバッファを作成できます。

于 2013-02-15T16:29:22.507 に答える
1

差分ソースコードがhttp://www.ioplex.com/~miallen/libmba/dl/src/diff.cにあるlibmbaを参照できます。

于 2013-02-15T16:44:43.263 に答える