大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C++技巧 > Cocos2d-x数据操作讲解

Cocos2d-x数据操作讲解(2)

关键词:Cocos2d-x数据操作  阅读(1327) 赞(10)

[摘要]本文是对Cocos2d-x数据操作的讲解,对学习C++编程技术有所帮助,与大家分享。

在cocos2d-x中,文件读写其实直接使用c/c++中的文件读写操作方法,但是,在实际运用中,由于移动客户端读写文件需要相应的权限,所以读写文件就需要先指定文件的路径,我们不需要获取绝对路径,只需要获取相对路径就行,因为cocos2d-x底层已经做了相应各个平台的处理;

    FileUtils * fu = FileUtils::getInstance();
    //    log("path = %s", fu->getWritablePath().c_str());
    //    FILE *f = fopen(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()).c_str(), "w");
    //    fprintf(f, "Hello Livingstone");
    //    fclose(f); 写文件

    Data d = fu->getDataFromFile(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()));
    log("data = %s", d.getBytes());

四、plist文件读取

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Ls</string>
    <key>isgirl</key>
    <false/>
</dict>
</plist>

上面是一个plist文件;

    FileUtils * fu = FileUtils::getInstance();
    ValueMap vm = fu->getValueMapFromFile("Info.plist");
    log("%s", vm["name"].asString().c_str()); // 读取string -->Ls
    bool bl = vm["isgirl"].asBool(); // 读取bool -->0
    log("%d", bl);

如果plist文件节点为数组,还可以通过ValueVectorgetValueVectorFromFile("xx");读取数据;

五、xml文件读取

    FileUtils * fu = FileUtils::getInstance();
    auto doc = new tinyxml2::XMLDocument();
    doc->Parse(fu->getStringFromFile("data.xml").c_str());
    auto root = doc->RootElement();
    for (auto e = root->FirstChildElement(); e; e = e->NextSiblingElement()) {
        std::string str;
        for (auto attr = e->FirstAttribute(); attr; attr = attr->Next()) {
            str += attr->Name();
            str += ":";
            str += attr->Value();
            str += ",";
        }
        log("%s", str.c_str());
    }

data.xml

<data>
    <p name="zs" age="23"/>
    <p name="ls" age="25"/>
</data>

上面的代码输出内容为:

cocos2d: name:zs,age:23,
cocos2d: name:ls,age:25,

注:需要导入cosos2d-x库<tinyxml2/tinyxml2.h>

六、JSON文件读取

先来看一个json : [{"name": "zs","age": 23}, {"name": "ls","age": 25}]

    rapidjson::Document d;
    d.Parse<0>(fu->getStringFromFile("dj.json").c_str()); // 0表示默认的解析方式;
    log("%s", d[rapidjson::SizeType(0)]["name"].GetString());

注:需要导入cocos2d-x库 <json/document.h>

«上一页12下一页»


相关评论