数据交换方式之CSV数据交换格式
csv被称为“逗号分隔值”(comma-separated values,CSV)
CSV数据交换解码
csv格式比较简单,解码使用字符串的截取和分析就可以完成,使用__Stringf和__Array等Ref类,解析CSV比较方便。
__String有如下函数:
<ol><li><span style="font-family: Arial, Helvetica, sans-serif;">_Array * componentsSeparatedByString(const char * delimiter);</span></li></ol>
csv解码过程的要点:①先分隔出每条记录,记录之间是通过回车符或换行符标明;②从每条记录中分隔字段,字段之间一般是用逗号等符号标明。
解码函数如下:__Array * parse(const char * fileName) { string path = FileUtils::getInstance()->fullPathForFilename(fileName); // 获取文件全称路径 string content = FileUtils::getInstance()->getStringFromFile(path); // 通过文件全称路径获取文件内容 __String * contentStr = _String::create(content); <strong>_Array * rows = contentStr->componentsSeparatedByString("\n");</strong> // 分行 _Array * ret = _Array::createWithCapacity(rows->count()); Object *obj = nullptr; CCARRAY_FOREACH(rows, obj) { auto fieldStr = static_cast<__String *>(obj); <strong>_Array * fields = fieldStr->componentsSeparatedByString(",");</strong> //分字段 ret->addObject(fields); } return ret; }
使用类封装该函数://.h文件 class CSVParser { public: static _Array * parse(const char * fileName);<span style="white-space:pre"> </span>// 静态函数,直接访问 } //.cpp文件 _Array * CSVParser::parse(const char * fileName) { // ...... }