关于Visual C ++:MFC Cstring类的拆分功能

Split functionality for MFC Cstring Class

如何在vc ++中通过分界符拆分CString对象?

例如我有一个string

"one+two+three+four"

变成CString变量。


与此问题类似:

1
2
3
4
5
6
7
8
9
10
11
CString str = _T("one+two+three+four");

int nTokenPos = 0;
CString strToken = str.Tokenize(_T("+"), nTokenPos);

while (!strToken.IsEmpty())
{
    // do something with strToken
    // ....
    strToken = str.Tokenize(_T("+"), nTokenPos);
}


1
2
3
4
5
6
7
8
9
10
CString sInput="one+two+three";
CString sToken=_T("");
int i = 0; // substring index to extract
while (AfxExtractSubString(sToken, sInput, i,'+'))
{  
   //..
   //work with sToken
   //..
   i++;
}

MSDN上的AfxExtractSubString。


1
2
3
4
5
6
int i = 0;
CStringArray saItems;
for(CString sItem = sFrom.Tokenize("",i); i >= 0; sItem = sFrom.Tokenize("",i))
{
    saItems.Add( sItem );
}

在VC6中,CString没有Tokenize方法,您可以使用strtok函数及其朋友。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <tchar.h>

// ...

CString cstr = _T("one+two+three+four");
TCHAR * str = (LPCTSTR)cstr;
TCHAR * pch = _tcstok (str,_T("+"));
while (pch != NULL)
{
  // do something with token in pch
  //
  pch = _tcstok (NULL, _T("+"));
}

// ...