コマンドラインでファイル名を引数として受け入れるプログラムをc ++で作成しています。
>> ./myprogram ../path/to/file.txt
を使用して fstream を簡単に開くことができることはわかってargv[1]
いますが、プログラムはファイルの正確な場所 (つまり、フル パス名) に関する詳細情報を必要とします。
argv[1]
に追加することを考えgetcwd()
ましたが、上記の例では明らかに/path/../path/to/file.txt
. fstream がそのパスを自動的に解決するかどうかはわかりませんが、解決したとしても、多くの文字列処理を行わないと完全なパスを取得できません。
もちろん、指定されたパスがすでに絶対パスである場合、その方法はまったく機能しません。また、このプログラムは Linux/Windows/etc で実行される可能性があるため、開始文字「/」を検出するだけでは、引数がフル パスであるかどうかを判断することはできません。
これは、複数の OS にまたがるパス名を処理するためのかなり一般的な問題だと思います。では、コマンド ライン引数のフル パス名を取得するにはどうすればよいでしょうか。また、これはオペレーティング システム間でどのように処理されるのでしょうか。