/*
* 문자열 토크나이징 함수
* 입력
* ch: 토큰 문자
* strIn: 입력 문자열
* strOut: 토큰 들이 담길 문자열 배열
* nSize: strOut의 크기
* 반환값 - 토큰 개수
* -1: 문자열의 마지막이 토큰인 경우, 즉, 토큰 뒤에 분리할 문자가 없는 경우
* (함수내 처리 가능; 제일 마지막 구분 문자를 제외하고 토크나이징 하면 됨)
* -2: 토큰으로 분리된 문자열 배열이 nSize보다 큰 경우
*/
int GenericFunc::SplitCString(char ch, const CString strIn, CString *strOut, int nSize)
{
int nStart, nStrLen, nTarget, nCount;
CString str = strIn;
str.TrimLeft();
str.TrimRight();
nStart = nCount = 0;
nStrLen = str.GetLength();
// 맨 처음에 구분 문자가 있는 경우
while( str.GetAt( 0 ) == ch )
{
str = str.Mid(1);
nStrLen = str.GetLength();
}
// 맨 마지막에 구분 문자가 있는 경우
while( str.GetAt( nStrLen-1 ) == ch )
{
str = str.Left(nStrLen-1);
nStrLen = str.GetLength();
}
for(;;)
{
nTarget = str.Find(ch, nStart);
// 구분 문자가 없는 경우
if(nTarget == -1) break;
// 데이터가 배열의 크기를 초과하는 경우
if(nCount>=nSize) return -2;
strOut[nCount] = str.Mid(nStart, nTarget-nStart);
nCount++;
nStart = nTarget+1;
}
if(nCount == 0) return 0;
if(nStart != nStrLen) {
// 데이터가 배열의 크기를 초과하는 경우
if(nCount>=nSize) return -2;
strOut[nCount] = str.Mid(nStart, nStrLen-nStart);
nCount++;
}
return nCount;
}
'개발 및 연구 정보' 카테고리의 다른 글
[펌]Webometrics - 웹 관계 (0) | 2008.05.15 |
---|---|
기초적인 수학 기호 (0) | 2008.01.25 |
[VC++]구조체를 qsort 하기 (0) | 2007.11.06 |
컴퓨터 관련 약어집 (0) | 2007.11.06 |
[VC++]대용량 변수 선언시 스택 에러 해제 (0) | 2007.10.23 |