2015-03-31 40 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