cocos 2 d-x 2.2.6のsplit分割文字列
3902 ワード
「100#200#300#400」のようなデータがあれば、orgeエンジンを以前に使用した場合、splitを用いて実現することができる.
実は現代コードは以下の通りです.OgreString.cppでは:
ではcococos 2 d-xには似たような関数がありますか?幸いにも見つけましたが、参考にしてください:...cocoaCCNS.cpp、実は現代コードは以下の通りです.
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);
}
}