2017-01-03 200 views
1

我正在從CS106L課程閱讀器編寫一個小遊戲。我使用Clion和Window。
我把level.txt放在main.cpp等的直接位置。但是爲什麼我需要輸入全名來讀取文件,而不是隻輸入level.txt? 的核心代碼:
```CClion - 爲什麼我需要輸入完整路徑?

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(); 
    } 
} 

``` 輸出是:
error

我的項目結構: error2

回答

3

Assumedly當前工作目錄時調用Snake.exe與包含level.txt的目錄不一樣。在命令行執行的程序從執行它們的shell中繼承它們當前的工作目錄。

+0

謝謝,我明白了。 –

+0

@KerwinXiao通常在這種情況下,你會接受答案。點,寶貴點。 –

0

正如Dan所說,相對路徑應該與您的.exe文件位置有關。如果您從IDE構建並運行程序,則會在某些CLion目錄中創建.exe文件。如果您想要更多地控制.exe文件位置,可以將以下行添加到CMakeLists.txt(在我假設的add_executable之前)。

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "path_to_directory_of_your_exe") 

這是我爲了方便使用相對路徑而做的。

相關問題