CまたはC++のdiffライブラリを探しています。 Unix diff
ツールをsystem
またはexec
と組み合わせて使用できることは知っていますが、本当にライブラリが必要です。 Unix patch
ツールのように、ライブラリがパッチも実行できると便利です。
私は最終的に、良い解決策を見つけたと思います:
DTL --Diffテンプレートライブラリ --- チュートリアル
パッチをサポートします。それを見つけるためにGoogleに「diff.cpp」と入力する必要がありました。うまくいけばうまくいきます!
Google Diff、Match、Patchライブラリ が必要なようです。
This は、「次の出版物で説明されているように、ヒルシュベルク線形空間の改良によるSES/LCSのソリューション」の実装です。
E.マイヤーズ、「An O(ND) Difference Algorithm and its Variables」、Algorithmica 1、2(1986)、251-266。 http:// www。 cs.arizona.edu/people/gene/PAPERS/diff.ps
diffのウィキペディアページ で見つかりました。
ただし、これは差分を見つけるためだけのものであり、パッチとして適用するためのものではありません。パッチの適用は実際にはもっと難しい問題だと思います。衝突のリスクがあるため。競合を解決するには、何らかの形のユーザー制御フィードバックメカニズムが必要になります。
Mercurial の一部であるものがあります。 Python拡張機能として設計されたCコードとして存在しますが、おそらくかなり簡単に抽出できます。バイナリ差分も実行できると思います。
関連する.cファイルは Mercurial/bdiff.c 、 Mercurial/mpatch.c そしておそらく Mercurial/diffhelpers.c です。
Subversionにはライブラリが含まれています libsvn_diff
。
また、Googleではほとんど見つけることができませんが、Gnulibには diff module があることがわかりました。これは私がdiffライブラリを欲しかったものには十分なようです。ただし、パッチモジュールはないようです。