2014年02月19日

[Cocos2d-x] std::vectorの中身の保存

CCHttpClientを使って取得したデータをファイルに保存するコードを書いていました。

std::vector<char> *data = response->getResponseData();

std::string path = CCFileUtils::sharedFileUtils()->getWritablePath() + "hoge.txt";
FILE *fp = fopen(path.c_str(), "w");
size_t count = fwrite(&data[0], sizeof(char), data->size(), fp);
fclose(fp);

こんなコードを書いたのですが、ファイルの内容は正しくありませんでした。
しかし、fwrite()の戻り値はdata->size()と一致するのです。
しばらく悩んで気付きました。
size_t count = fwrite(&(*data)[0], sizeof(char), data->size(), fp);

こうですね。
そりゃあ変なデータが書き込まれるわけですね。

posted by t2low at 22:00| Cocos2d-x