ブログのサンプルコードをみて、そのまま実装してみたのですがうまくいきません。
std::string userId = user.at("id").asString();
の箇所を追加すると以下のエラーが出ます。
libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: unordered_map::at: key not found
Xcodeのバージョンは6.4、cocos2dxのバージョンは3.3です
どなたか教えていただけないでしょうか。
参考サイト:http://buildman.xyz/blog/cocos2dx-beginner-18/
以下ソースコードです
bool HelloWorld::init()
{
//略...
//データの読み込み ValueVector users; std::string csvStr = FileUtils::getInstance()->getStringFromFile("user.csv"); ValueVector balls = this->split(csvStr, "\n"); ValueVector keys = this->split(balls.at(0).asString(), ","); for (int i = 1; i < (int)balls.size(); i ++) { ValueMap userParams; ValueVector params = this->split(balls.at(i).asString(), ","); for (int j = 0; j < (int)params.size(); j ++) { userParams[keys.at(j).asString()] = params.at(j).asString(); } users.push_back(Value(userParams)); log("push"); } //データの確認 for (int i = 0; i < (int)users.size(); i ++) { ValueMap user = users.at(i).asValueMap(); std::string userId = user.at("id").asString(); std::string name = user.at("name").asString(); std::string place = user.at("place").asString(); log("%s, %s, %s, %d", userId.c_str(), name.c_str(), place.c_str(), (int)users.size()); } //略...
}
ValueVector HelloWorld::split(const std::string &str, const std::string &delim){
ValueVector res;
size_t current = 0, found;
while((found = str.find_first_of(delim, current)) != std::string::npos){
res.push_back(Value(std::string(str, current, found - current)));
current = found + 1;
}
res.push_back(Value(std::string(str, current, str.size() - current)));
return res;
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。