2015년 2월 4일 수요일

Visual C++ (MFC) 기준 스트링 검색/추출/분리(Find/SubString/Split)

오늘 포스팅 할 내용은 Visual C++(MFC) 환경에서 스트링 검색/추출/분리 작업에 대해서 이야기 합니다.

프로그램을 만들다 보면 스트링 핸들링은 중요한 항목중에 하나이고 뭐 대충 검색 해보면 많은곳에서 가이드 하고 있습니다.

그래도 샘플을 찾다 보면 내가 제시한 샘플을 찾고 자 하는 사람들을 위해서 ^^

일단 선행 조건은 특정 디렉토리에 파일이 있을경우 파일명만 찾아서 추출하고 과정과 디렉토리 를 "\\" 문자로 분리 하는 과정을

소개 합니다.

CString strOrgPath = "C:\\Temp\\Dummy.txt";

CString strOnlyFileName = "";

// 파일을 분리 하기 위한 Reverse Find

int nFind = strOrgPath.ReverseFind('\\');

// 파일 이름 분리 작업.

if(nFind >= 0)

strOnlyFileName = strOrgPath.Mid(nPos+1, strOrgPath.GetLength()-nPos);

MFC 는 스트링 분리 하는 함수가 별도로 없으므로

디렉토리를 "\\" 로 분리 하는 작업은 별도 함수로 제작하여 CStringArray 로 리턴하여 처리 되는 구조로 설명합니다.

//스트링 분리 함수.

int  SplitString(LPCTSTR szText, LPCTSTR separator, CStringArray &arrData)
{
    CString strText = szText;

    arrData.RemoveAll();
    strText.TrimLeft();        strText.TrimRight();

    if(strText.IsEmpty())     return 0;

    int nSeLen = strlen(separator);
    int    nCount = 0;  
    CString strTemp, strTemp1;
    int nIndex = strText.Find(separator);
    while (nIndex >= 0)

   {
        strTemp = strText.Left(nIndex);
        strText = strText.Mid(nIndex+nSeLen);
        nCount++;
        arrData.Add(strTemp);
        nIndex = strText.Find(separator);
    }
    arrData.Add(strText);
    return arrData.GetSize();
}

// 실제 사용방법

CStringArray sArrSplitPath;

int nSplitCnt = SplitString(strOrgPath, "\\", sArrSplitPath);

for(int i=0; i<nSplitCnt; i++)

{

TRACE("Path = %s\n", sArrSplitPath[i]);

}

여기까지 ^^;

댓글 없음: