私の問題は次のようなものです: Windows プラットフォームで 2 つのパスが同一であるかどうかを判断するには、大文字と小文字を区別せずにパスを比較します。「C:\test.txt」と「C:\Test.txt」は同じファイル要素に解決されます。たとえば、を使用してこれを簡単に解決できますstd::filesystem::equal
が、この特定の問題については、OS ラウンドトリップを少し節約したいと思います (アイドル状態で実行し、各ループで 100 回以上の比較を実行します - 目立つようになるのではないかと心配しています)。
using path = std::filesystem::path;
const bool result = (path("C:\\test.txt").lexically_normal().make_preferred().native() == path("C:\\Test.txt").lexically_normal().make_preferred().native());
を比較するときstd::filesystem::path
、呼び出しによって字句的に正規化された場合でもlexical_normal
、一般的な方法で行われるため、大文字と小文字が考慮されます。これはもちろん理にかなっていますが、文字列を自分で比較する以外に、比較せずにライブラリでこれを行う方法がわかりません。パスの比較方法を何らかの方法でオーバーライドすることは可能ですか?
私も調べましboost::filesystem
たが、私が見る限り、問題にも対処していません。