CString의 Spilt 함수 구현
절름발이 프로그래머/C언어, C++ 과 Visual C++ / 2009. 3. 6. 15:09
CString을 특별한 문자열을 기준으로 Split 하는 함수
사용법:
CstringArray Splitstrings;
int numofsplitedstrings = SplitString(inputstring, L" ", Splitedstrings);
구현:
int SplitString(const CString& strInputString, const CString& strDelimiter, CStringArray& arrStringArray)
{
int iPos = 0;
int newPos = -1;
int sizeS2 = strDelimiter.GetLength();
int isize = strInputString.GetLength();
CArray<INT, int> positions;
newPos = strInputString.Find (strDelimiter, 0);
if( newPos < 0 )
return 0;
int numFound = 0;
while( newPos > iPos )
{
numFound++;
positions.Add(newPos);
iPos = newPos;
newPos = strInputString.Find (strDelimiter, iPos + sizeS2);
}
for( int i=0; i <= positions.GetSize(); i++ )
{
CString s;
if( i == 0 )
s = strInputString.Mid( i, positions[i] );
else
{
int offset = positions[i-1] + sizeS2;
if( offset < isize )
{
if( i == positions.GetSize() )
s = strInputString.Mid(offset);
else if( i > 0 )
s = strInputString.Mid( positions[i-1] + sizeS2, positions[i] - positions[i-1] - sizeS2 );
}
}
arrStringArray.Add(s);
}
return numFound;
}