2012-10-07 140 views
3

我有ifstream打開函數的問題。我在netbeans的linux下創建應用程序。 我的代碼是:ifstream打開文件C++

ifstream file; 
file.open(path); 
file.is_open() 
. 
. 
. 

問題出在路徑上。當我使用〜/ Desktop/file.txt並運行應用程序時,文件未打開。但是,當我調試應用程序,一切正常。 這個問題的任何提示? 謝謝

回答

4

路徑名〜/ Desktop/file.txt將不匹配文件,除非它已經擴展了波形符號,這通常由shell在將它傳遞給程序之前完成。 如果直接調用它,那麼你需要使用一個全路徑名

/home/user/Desktop/file.txt 

或相對路徑

./Desktop/file.txt 

我懷疑調試器擴展文件名你是之前有幫助傳遞給程序。

+0

./Desktop/file.txt不起作用。但它也必須與〜一起工作。 – JuP

+0

它很大程度上取決於你如何調用該命令,以及從哪個目錄。 – Julian

+2

用於'〜'的正確目錄位於'getenv(「HOME」)''獲得的環境變量'HOME'中。所以如果你得到的文件名以'〜/'開始,你只需要用'HOME'的內容替換波浪號以得到絕對路徑。但是請注意,您通常不應該使用從命令行獲得的文件名來執行此操作,因爲它們預計會由shell進行擴展。 – celtschk