关于Cocos2d-x中数据的存储提取和类型转换

1.获得存储在UserDefault中的变量,但是获得的变量是一个String类型的值,要用atoi函数转换为整型,但是atoi函数的传递参数是一个char*类型的值,所以用_Score.c_str()把String转化为Char*

auto userdefault = UserDefault::getInstance();
auto _Score = userdefault->getStringForKey("RewardScore");
_rewardScore = atoi(_Score.c_str());
_rewardScore = _rewardScore + 10;

2.把数据存储在UserDefault中,但是必须先把整型的_rewardScore转化为字符型的变量,用到sprintf函数,转化后就可以存储了

char score_str[100] = { 0 };
sprintf(score_str, "%d", _rewardScore);
userdefault->setStringForKey("RewardScore", score_str);

3.存储在map类型的数据的一系列操作

// 测试代码开始
    //Map<std::string, Node*> map1;
    // empty函数返回Map容器是否为空
    //log("%s", map1.empty() ? "map1容器为空!" : "map1容器不为空!");
    // size函数返回Map容器中元素的数量
    //log("map1.size: %i", (int)map1.size());
    //log("bucket_count = %d", static_cast<int>(map1.bucketCount()));
    //for (int i = 1; i <= 10; i++)
    //{
    //    auto node = Node::create();
    //    node->setTag(i);
    //    // insert函数向容器中插入新元素
    //    map1.insert(StringUtils::toString(i), node);
    //}
    //log("循环给map1容器insertNode之后:");
    //log("%s", map1.empty() ? "map1容器为空!" : "map1容器不为空!");
    //log("map1.size: %i", (int)map1.size());
    //log("----- Map容器中所有key ---------");
    //// keys函数获得Map容器的所有键,遍历打印结果并不是插入顺序显示,因为Map是无序的
    //auto keys = map1.keys();
    //for (const auto& key : keys)
    //{
    //    log("key = %s", key.c_str());
    //}
    //// getRandomObject函数获得随机的对象
    //log("getRandomObject: %i", map1.getRandomObject()->getTag());
    //log("------ 根据值查找key --------");
    //// at函数根据键查找返回值
    //auto node10Key = map1.at("10");
    //map1.insert("100", node10Key);
    //map1.insert("101", node10Key);
    //map1.insert("102", node10Key);
    //// 返回参数V在Map中匹配的所有键的集合
    //auto keysForObject = map1.keys(node10Key);
    //for (const auto& key : keysForObject)
    //{
    //    log("key = %s", key.c_str());
    //}
    //// find函数根据key查找返回对应的迭代器,迭代器中包含了键和值
    //auto nodeToFind = map1.find("100");
    //log("first: %s", nodeToFind->first.c_str());
    //log("second: %i", nodeToFind->second->getTag());
    //// erase函数删除容器中的元素
    //log("------ erase之后 --------");
    //// 根据key删除
    //map1.erase("1");
    //// 根据迭代器删除
    //map1.erase(map1.find("2"));
    //// 根据键集合删除
    //std::vector<std::string> itemsToRemove;
    //itemsToRemove.push_back("3");
    //itemsToRemove.push_back("4");
    //itemsToRemove.push_back("5");
    //map1.erase(itemsToRemove);
    //for (const auto& key : map1.keys())
    //{
    //    log("key = %s", key.c_str());
    //}
    //// clear函数清空容器
    //map1.clear();
    //log("------ clear之后 --------");
    //log("%s", map1.empty() ? "map1容器为空!" : "map1容器不为空!");
    //// size函数返回Map容器中元素的数量
    //log("map1.size: %i", (int)map1.size());
原文地址:https://www.cnblogs.com/HangZhe/p/6130868.html