cocos 2 d-x 2.2.6のsplit分割文字列

3902 ワード

「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 = "\t
", 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; }

 ではcococos 2 d-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);
    }
}