Linux 上の C++ で、楽しみのために独自のスクリプト言語を構築しています (そうです、これを行うことの難しさは承知しています)。このスクリプト言語には、インタープリター パス ステージに相対ファイル名を含めるためのインポート メカニズムがあります。
どれが/home/michael/foo/bar
ロード../bar/baz
されるかなどをロードする可能性があります../foo/baz
。私が得る問題は、次のようなファイル名をロードする必要があることです:(/home/michael/foo/../bar/../foo/baz
現在のディレクトリに再帰的に追加された相対ファイル名)。これはエラー出力で非常にばかげているように見えます。非常に非効率的であることは言うまでもなく、後で他の問題を引き起こすと思います。
(独自のファイル名パーサーを作成する以外に) ファイル名を「最適化」または「圧縮」して、ロードするだけで済むようにするにはどうすればよい/home/michael/foo/baz
ですか?
私はライブラリの使用を嫌いではありませんが、可能であれば POSIX/GNU C ライブラリ/拡張機能または Boost を使用することを好みます。何を検索したらいいのかわからないだけかもしれませんが。