-
Cstring 토큰 분리개발/지름 2007. 11. 10. 20:41반응형
MSDN에는 없는 AfxExtractSubString 함수
-함수원형
BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
int iSubString, TCHAR chSep = "\n");
-사용법
Param1: 목적 문자열
Param2: 소스 문자열
Param3: 구하고자 하는 부분의 인덱스
Param4: 구분자
CString strSource , strRoot, strFile;
strSource = "C:\\Windows\\Temp\\abc.txt";
AfxExtractSubString(strRoot, strSource, 0, "\n");
AfxExtractSubString(strFile, strSource, 3, "\n");
Result :
strRoot= "C:"
strFile = "abc.txt"////////////////////////////////////////////////////////////////////////////////////////
<개요>
MFC에서 간단하게 토큰을 분리해주는 함수
<원형>
BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep)
<인자들>
CString& rString : 추출된 스트링을 리턴받음.
LPCTSTR lpszFullString : 구분자로를 포함하는 원본 스트링.
int iSubString : 몇번째 토큰인가?
TCHAR chSep : 구분자(없으면 Default로 '\n')
<사용예>
CString strTest;
CString strFullString = "I| am| Test"; //Delimiter로 '|'를 사용.::AfxExtractSubString(strTest, strFullString, 0, '|');
=> strTest == I
::AfxExtractSubString(strTest, strFullString, 1, '|');
=> strTest == am
::AfxExtractSubString(strTest, strFullString, 2, '|');
=> strTest == Test
::AfxExtractSubString(strTest, strFullString, 1, '|');
=> strTest == NULL
<AfxExtractSubString는 어떻게 생겼나>
* WINSTR.CPP 에 있고 아래같이 생겼다.
BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
while (iSubString--)
int iSubString, TCHAR chSep)
{
if (lpszFullString == NULL)
return FALSE;
{
lpszFullString = _tcschr(lpszFullString, chSep);
if (lpszFullString == NULL)
{
rString.Empty(); // return empty string as well
return FALSE;
}
lpszFullString++; // point past the separator
}
LPCTSTR lpchEnd = _tcschr(lpszFullString, chSep);
int nLen = (lpchEnd == NULL) ?
lstrlen(lpszFullString) : (int)(lpchEnd - lpszFullString);
ASSERT(nLen >= 0);
memcpy(rString.GetBufferSetLength(nLen), lpszFullString, nLen*sizeof(TCHAR));
return TRUE;
}반응형