Split functionality for MFC Cstring Class
如何在vc ++中通过分界符拆分
例如我有一个
"one+two+three+four"
变成
与此问题类似:
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("+")); } // ... |