Android 从Cocos2dx中指针的字符向量写入sqlite文件
我正在使用HttpClient类。当我得到响应时,我想将响应数据写入文件。当我检查该文件时,它的格式错误,无法作为普通sqlite文件打开。我的代码怎么了Android 从Cocos2dx中指针的字符向量写入sqlite文件,android,c++,cocos2d-x,Android,C++,Cocos2d X,我正在使用HttpClient类。当我得到响应时,我想将响应数据写入文件。当我检查该文件时,它的格式错误,无法作为普通sqlite文件打开。我的代码怎么了 // Get data std::string path = cocos2d::FileUtils::getInstance()->getWritablePath() + "test.db3"; auto buffer = response->getResponseData();
// Get data
std::string path = cocos2d::FileUtils::getInstance()->getWritablePath()
+ "test.db3";
auto buffer = response->getResponseData();
FILE *pFile;
pFile = fopen(path.c_str(), "wb");
int size = buffer->size();
fwrite(&size, sizeof(int), 1, pFile);
fclose(pFile);
解决方案由OP
Wel SQLite是一个数据库。因此,您需要使用表、行等。仅仅写出对.db3文件的响应就会破坏它。您向fwrite传递了错误的参数。第一个应该是
&buffer
,第三个是字节数,所以您必须计算有多少字节。@GameDeveloper:我需要从服务器下载SQLite文件,所以我使用HttpClient,它返回data=response->getResponseData()。不管怎样,我找到了解决这个问题的方法。今后,请把你的解决方案作为你自己问题的答案发布,然后在两天内将其标记为已接受。当其他人遇到这个问题并试图找到答案时,它会有所帮助。:)
// Get data
std::string path = cocos2d::FileUtils::getInstance()->getWritablePath()
+ "serverdb.sqlite";
auto buffer = response->getResponseData();
std::ofstream ofs;
ofs.open(path.c_str(), std::ios::out | std::ios::trunc);
ofs.write(&(buffer->front()), buffer->size());
ofs.flush();
ofs.close();