我正在从CS106L课程读者那里写一个小游戏。我使用Clion和Window
我将level.txt
放在main.cpp
等的直接位置。但为什么我需要输入全名来读取文件而不是只输入level.txt
?
核心代码是:
```C
void readCorrectFile(ifstream& input) {
// Read the user's prompt until user prompt the right file.
while (true) {
cout << "Enter the file name: ";
string filename;
getline(cin, filename);
// Find if it's a valid name
input.open(filename.c_str());
if (input.is_open()) {
return;
}
// Show info about read file.
cout << "Sorry, we cannot find: " << filename << endl;
input.clear();
}
}
答案 0 :(得分:3)
假设调用Snake.exe
时当前的工作目录与包含level.txt
的目录不同。在命令行执行的程序从执行它们的shell继承其当前工作目录。
答案 1 :(得分:0)
正如Dan所说,相对路径应该与您的.exe文件位置相关。如果您从IDE构建并运行程序,则会在某些CLion目录中创建.exe文件。如果您希望更好地控制.exe文件位置,可以将以下行添加到CMakeLists.txt中(在我假设的add_executable之前)。
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "path_to_directory_of_your_exe")
这是我有时为了方便使用相对路径而做的事情。