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);
        }
    }        
  • 相关阅读:
    文件数据源设置
    维护0material主数据,提示Settings for material number conversion not found
    7.5版本COPA数据源创建转换提示“不允许对象名称为空”
    COPA指标自动创建
    IDEA操作数据库
    Docker(快速实战流程)
    Docker(理论部分小结)
    Docker数据卷挂载相关
    解决pycharm启动updating Python interpreter长时间更新
    IDEA完美配置(shell)linux的命令行工具
  • 原文地址:https://www.cnblogs.com/SkyflyBird/p/5117631.html
Copyright © 2011-2022 走看看