C++ ( main.cpp )のアルゴリズムがあり、CLionを使用してコンパイルおよび実行します。アルゴリズムはテキスト ファイルから文字列を読み取りますが、誤りがあります。
data.txt を開けませんでした(ファイルが存在し、main.cppと同じフォルダーに配置されています)
どうすればそれを修正して、このファイルを CLion に「見える」ようにできますか?
C++ ( main.cpp )のアルゴリズムがあり、CLionを使用してコンパイルおよび実行します。アルゴリズムはテキスト ファイルから文字列を読み取りますが、誤りがあります。
data.txt を開けませんでした(ファイルが存在し、main.cppと同じフォルダーに配置されています)
どうすればそれを修正して、このファイルを CLion に「見える」ようにできますか?
またはに似たものを使用してfopen
いて、 を渡すだけ"data.txt"
の場合、そのファイルは実行中のプログラムの現在の作業ディレクトリ (コンパイルしたばかりのディレクトリ) にあると見なされます。
だから、どちらか
fopen("/full/path/to/data.txt")
のように、実際のフル パスを使用する代わりにフル パスを指定します。
(好ましくありません)、data.txt を、CLion がコンパイルされたプログラムを実行するディレクトリに移動します。
(#2については、そのディレクトリを取得するハックな方法があります)
char buf[1024]; // hack, but fine for this
printf("%s\n", getcwd(buf, 1024));
fopen
作業ディレクトリから相対的にできるようになりました。
この問題を解決する別の方法を見つけました。
@Lou Franco のソリューションは、プロジェクト構造に影響を与える可能性があります。たとえば、サーバーにコードをデプロイする場合、リソース ファイルを特定のディレクトリに移動する必要があります。
私がしているのは、WindowsでCmakeLists.txt を変更することです
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "D:\\science\\code\\English-Prediction")
CMAKE_RUNTIME_OUTPUT_DIRECTORYは CMake 変数で、CLion 作業ディレクトリの作業ディレクトリを割り当てます。