2015-03-31 41 views
0

儘管文件在項目中,但我仍無法使用fstream打開文件。這裏的代碼:無法通過fstream打開文件cocos2d-x

std::fstream fst("Resources/test.txt"); 
std::string fileStr; 
std::getline(fst, fileStr); 
log("line\n %s", fileStr.c_str()); 

文件test.txt是在我的項目中的資源文件夾,選中。我會感謝你們的幫助。謝謝!

+0

你不假設*當前工作目錄*是'Resources'文件夾的父目錄嗎? – trojanfoe 2015-03-31 13:53:02

+0

談到目前的工作目錄,你的意思是我的課程在哪裏與流一起工作的目錄?對不起,如果我不明白你的權利。 – 2015-04-01 05:53:30

+0

你在哪個操作系統上運行代碼? – fnc12 2016-10-13 11:37:34

回答

1

我認爲fstream無法在cocos2d-x中使用。既不打開。

您可以使用cocos2d :: FileUtils API。

cocos2d::FileUtils * file_utils = cocos2d::FileUtils::sharedFileUtils(); 
std::string full_path = file_utils->fullPathForFilename("test.txt"); 
long int data_size; 
unsigned char * file_data = file_utils->getFileData(full_path.c_str(), "r", &data_size); 
cocos2d::log("file_data is %s", file_data); 

*注意:不是 「資源/ test.txt的」 但是 「的test.txt」

+0

哎呀。你應該寫「delete [] file_data;」 finaly。 – 2015-04-01 01:06:46

+0

謝謝,它的工作原理!但我需要寫一些信息到這個文件。沒有fstream課程我該怎麼做? – 2015-04-01 06:11:12

+0

@EugeneAlexeev幾件事情。首先,如果這個答案對你有幫助,那麼爲什麼你沒有提高呢?你不認爲鼓勵別人的幫助是有益的嗎?其次,這個答案不使用'fstream',所以你的評論是什麼意思? – trojanfoe 2015-04-01 06:23:34

0

我覺得@yuni_net_liberty是錯誤的。

fstream和fopen可以在cocos2d-x中使用。我可以理解爲什麼一些C++代碼無法在C++項目中運行。

fstream不工作的原因是因爲有兩種資源。捆綁出來。捆綁中的資源不能被讀取使用ftream和fopen。他們只能用本地代碼讀取(objctiveC,java)

+0

感謝您的回覆!捆綁和捆綁之間有什麼區別?是否如果資源位於「複製捆綁軟件資源」部分,因此這是「捆綁在一起?」 – 2015-04-01 09:20:14

+0

不,問題是目錄。進程的*當前工作目錄*與應用程序捆綁軟件不同爲什麼代碼在問題中失敗@ yuni_net_liberty的答案是正確的,因爲他們推薦使用FileUtils :: fullPathForFilename()來獲取包中文件的完整路徑,而不管CWD如何。 – trojanfoe 2015-04-01 13:48:21

+0

@trojanfoe非常感謝,人! – 2015-04-03 09:34:52