2014-01-08 325 views
0

我在一個小型的C++程序中打開了一個ofstream。該文件與程序位於同一目錄中。它工作正常,當我用完整的文件路徑打開它。 但只用「file.dat」打開它不起作用。 所以我的問題是:我如何聲明一個文件的路徑(或只是文件),而不包括其路徑?鑑於它是相同的目錄。目前目錄的文件路徑。 C++

if(!readTheFile("/Users/mydirect/Desktop/DV1S5U4/DV1S5U4/timelog.dat")){ 
    cout << "Cant read timelog.dat" << endl; 
} 
+0

您是否正在IDE中執行/執行?工作路徑有時會被設置到另一個地方搞亂了。 – zero298

+0

我可以在Xcode中工作。也許這就是爲什麼? – Pickaboo

+0

這有幫助嗎? http://stackoverflow.com/questions/3692489/getting-current-directory-in-objective-c –

回答

0

你的代碼應該工作。你遇到的問題是你需要設置你的工作目錄,因爲我不知道默認的位置。

Product > Edit Scheme > Info > Working Directory 

在那裏你可以設置它。一旦你設置好並將.dat放在同一個文件夾中,它就可以工作。

0

如果該文件確實是當前工作目錄,你可以使用"timelog.dat",或者至少在POSIX系統,"./timelog.dat"。從它的聲音中,當前的工作目錄看起來與你的想法有所不同。

順便說一句,注意,在打開一個文件進行讀取std::ofstream不工作也很好:你可能想嘗試std::ifstream。如果在試圖用std::ofstream打開文件時該文件是可寫的,則它現在將爲空,除非在打開文件時傳遞參數std::ios_base::app。 ...如果該文件不可寫入,則使用std::ofstream將其打開將失敗。

0

你寫道你的文件與程序在同一個目錄下 - 聽起來好像你之後的內容不是當前目錄,而是可執行文件的目錄。您可以使用函數_NSGetExecutablePath()在OS X上找到它 - 這隻需要緩衝區和緩衝區大小並返回路徑。