char string[] = "101 ¦235 ¦501 ¦131458 ¦89727 ¦123456";
char seps[] = " ¦";
char *token;void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}CString str( "101¦235¦501¦131458¦89727¦123456" );
CString resToken;
int curPos= 0;resToken= str.Tokenize("!",curPos);
while (resToken != "")
{
printf("Resulting token: %s\n", resToken);
resToken= str.Tokenize("|",curPos);
};
while(!str.IsEmpty())
{
int n = str.FindOneOf(" |"); // 注意空格 CString str1 = str.Left(n);
//这里保存或显示str1
str.Delete(0, n);
str.TrimLeft(" |"); // 注意空格
}
{
int nSign=0;
CString result=_T("");
for(int i=0;i<strOpt.GetLength();i++)
{
if(strOpt.GetAt(i)==sign)
{
if(n-1==nSign)
{
return result;
}
else
{
nSign++;
result=_T("");
}
}
else
{
result+=strOpt.GetAt(i);
}
}
if(n-1==nSign)
return result;
else
return _T("");
}
using namespace std;
using namespace boost; split() 按照给定的谓词切割字符串,并且把切割后的值放入到给定的容器中
Example:
class SplitNotThisChar
{
public:
SplitNotThisChar(const char ch) : m_char(ch) {}
bool operator ()(const char &ch) const
{
if(ch == m_char)
return true;
else
return false;
}
private:
char m_char;
};string str1("hello world!");
string str2;
std::vector<std::string> result;
split(result, str1, SplitNotThisChar('l')); // result = [4]("he","","o wor","d!")
/*
* 函数功能 :以特定字符拆分字符串
* 备注 :非'\0'字符
* 作者 :
* 时间 :2008-03-04 8:49:25
*/
void SplitString(LPCTSTR lpszSrc, StringArray &szaDst, char c)
{
assert(!IsBadStringPtr(lpszSrc, -1));
assert(c != '\0');
string strSrc(lpszSrc);
szaDst.clear();
while (!strSrc.empty())
{
int nLeft = strSrc.find(c);
// 判断待查字符有没找到,若没找到,则插入到尾部
if (string::npos == nLeft)
{
szaDst.push_back(strSrc);
break;
}
else
{
string strTemp = strSrc.substr(0, nLeft);
// 将元素加入尾部
szaDst.push_back(strTemp);
strSrc = strSrc.substr(nLeft + 1);
}
}
}
/*
* 函数功能 :以特定字符拆分字符串
* 备注 :非'\0'字符
* 作者 :
* 时间 :2008-03-03 8:49:25
*/
void SplitString(LPCTSTR lpszSrc, CStringArray &szaDst, char c)
{
ASSERT(AfxIsValidString(lpszSrc));
ASSERT(c != '\0');
CString szStr(lpszSrc);
szaDst.RemoveAll();
// 待查字符 c 在待查字符串中的位置
int nLeft = szStr.Find(c);
while (!szStr.IsEmpty())
{
if (nLeft == -1)
{
szaDst.Add(szStr);
break;
}
else
{
CString sztemp = szStr.Left(nLeft);
szaDst.Add(sztemp);
szStr = szStr.Mid(nLeft + 1);
nLeft = szStr.Find(c);
}
}
}
/*
* 函数功能 :以特定字符拆分字符串
* 备注 :非'\0'字符
* 作者 :
* 时间 :2008-03-04 8:49:25
*/
void SplitString(LPCTSTR lpszSrc, StringArray &szaDst, char c)
{
assert(!IsBadStringPtr(lpszSrc, -1));
assert(c != '\0');
string strSrc(lpszSrc);
szaDst.clear();
while (!strSrc.empty())
{
int nLeft = strSrc.find(c);
// 判断待查字符有没找到,若没找到,则插入到尾部
if (string::npos == nLeft)
{
szaDst.push_back(strSrc);
break;
}
else
{
string strTemp = strSrc.substr(0, nLeft);
// 将元素加入尾部
szaDst.push_back(strTemp);
strSrc = strSrc.substr(nLeft + 1);
}
}
}