CまたはC++のdiffライブラリを探しています。diff
Unixツールをまたはと組み合わせて使用できることは知っていますが、system
本当にexec
ライブラリが必要です。patch
Unixツールのように、ライブラリがパッチも実行できると便利です。
6 に答える
私は最終的に、良い解決策を見つけたと思います:
DTL-差分テンプレートライブラリ---チュートリアル
パッチをサポートしています。それを見つけるためにGoogleに「diff.cpp」と入力する必要がありました。うまくいけばうまくいきます!
Google Diff、Match、Patchライブラリが必要なよう です。
これは、「次の出版物で説明されているように、Hirschberg線形空間の改良によるSES/LCSのソリューション」の実装です。
E.マイヤーズ、「O(ND)差分アルゴリズムとそのバリエーション」、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モジュールがあることがわかりました。これは、私がdiffライブラリを求めていたものには十分なようです。ただし、パッチモジュールがないようです。