zoukankan      html  css  js  c++  java
  • cocos2d-x 2.2.6 之 split分割字符串

    如果有这样的数据,如: “100#200#300#400”,在之前使用orge引擎的情况下,可借助split来实现,如:

    Ogre::String str = "100#200#300#400";
    StringVector strVec = StringUtil::split(str,"#");

    其实现代码如下,在OgreString.cpp中:

    // 头文件
    static vector<String>::type split( const String& str, const String& delims = "	
     ", unsigned int maxSplits = 0);
    
    // 实现文件
    StringVector StringUtil::split( const String& str, const String& delims, unsigned int maxSplits)
        {
            StringVector ret;
            // Pre-allocate some space for performance
            ret.reserve(maxSplits ? maxSplits+1 : 10);    // 10 is guessed capacity for most case
    
            unsigned int numSplits = 0;
    
            // Use STL methods 
            size_t start, pos;
            start = 0;
            do 
            {
                pos = str.find_first_of(delims, start);
                if (pos == start)
                {
                    // Do nothing
                    start = pos + 1;
                }
                else if (pos == String::npos || (maxSplits && numSplits == maxSplits))
                {
                    // Copy the rest of the string
                    ret.push_back( str.substr(start) );
                    break;
                }
                else
                {
                    // Copy up to delimiter
                    ret.push_back( str.substr(start, pos - start) );
                    start = pos + 1;
                }
                // parse up to next real data
                start = str.find_first_not_of(delims, start);
                ++numSplits;
    
            } while (pos != String::npos);
            return ret;
        }

     那么cocos2d-x 中有类似的函数存在吗?很幸运还是找到了,大家可参考:...cocoaCCNS.cpp,其实现代码如下:

    #include "CCNS.h"          // 
    
    typedef std::vector<std::string> strArray;
    // string toolkit
    static inline void split(std::string src, const char* token, strArray& vect)
    {
        int nend=0;
        int nbegin=0;
        while(nend != -1)
        {
            nend = src.find(token, nbegin);
            if(nend == -1)
                vect.push_back(src.substr(nbegin, src.length()-nbegin));
            else
                vect.push_back(src.substr(nbegin, nend-nbegin));
            nbegin = nend + strlen(token);
        }
    }        
  • 相关阅读:
    移动端h5实现拍照上传图片并预览&webuploader
    移动端实现上拉加载更多(使用dropload.js vs js)
    实用的移动端日历选择插件
    string.replace替换
    js与native的交互
    div实现返回符,倒三角,椭圆+小知识收集
    js返回一组日期中最近连续的天数
    javascript 事件冒泡和事件代理
    微信小程序DEMO——面包旅行的代码
    微信小程序使用 iconfont
  • 原文地址:https://www.cnblogs.com/SkyflyBird/p/5117631.html
Copyright © 2011-2022 走看看