大きなコード内でファイルを開こうとしています。
ファイルを扱うときは、相対パスではなく絶対パスを使用する方が良いかもしれないと言われました。ただし、このコードは、ソースを別の場所 (/home/username、または /home/username/desktop/ など) に配置する可能性のあるさまざまな人によって使用されるため、相対パスを使用する方がよいと思います私の構成ファイルにアクセスします。これは、構成ファイルが cpp ファイルに関連してどこにあるかを知っているためです。
私の質問に関連するファイルの場所の簡単な要約は次のとおりです。
読みたいファイルは /home/me/myproject/config/myfile.txt です
私が読んでいるファイルは /home/me/myproject/src/myfile.cpp です
「main」を含むファイルも /home/me/myproject/src/myfile.cpp です (この 1 つのファイルは巨大です)。
私はEclipseから実行可能ファイルを起動しています。eclipse は作業ディレクトリを「main」があるディレクトリ (/home/me/myproject/src/) に設定すると思います。
file.open() を呼び出そうとすると、作業ディレクトリ (getcwd()) が /home/me/myproject/ になっていることに困惑しています。どうやら作業ディレクトリは、main() と file.open() への呼び出しの間のコードによって変更されたようです。
私の質問は次のとおりです。プログラムの別の部分で変更できる場合、作業ディレクトリに依存するのは非常にエラーが発生しやすいようです。一方、他の開発者が通常ソースをどこに置いているのかわからない場合、構成パスがどこにあるのかを他にどのように知ることができますか?