2009/02/02

[MFC] 간단하게 부분 문자열을 추출하는 방법 - AfxExtractSubString()

Toolbar 의 ToolTip 을 변경하고 싶어서 자료를 찾던 도중 알게된 함수이다.

이 함수는 전체 문자열 중에서 지정된 구분자로 구분하였을때 특정 위치의 문자열을 찾아 준다.

다음은 함수 원형이다.
BOOL AFXAPI AfxExtractSubString (
   CString& rString,
   LPCTSTR lpszFullString,
   int iSubString,
   TCHAR chSep = '\n'
);

MSDN 사이트에서 발췌한 사용예(http://msdn.microsoft.com/en-us/library/aa991543.aspx)

// The following example extracts a series of name, value pairs from a
// given source string:

// Input string consisting of a number of name, value pairs
LPCTSTR lpszSource = _T("\"Name\"=\"John Smith\"\n")
_T("\"Company\"=\"Contoso, Ltd\"\n\"Salary\"=\"25,000\"");

CString strNameValue; // an individual name, value pair

int i = 0; // substring index to extract
while (AfxExtractSubString(strNameValue, lpszSource, i))
{
// Prepare to move to the next substring
i++;

CString strName, strValue; // individual name and value elements

// Attempt to extract the name element from the pair
if (!AfxExtractSubString(strName, strNameValue, 0, _T('=')))
{
// Pass an error message to the debugger for display
OutputDebugString(_T("Error extracting name
\n"));
continue;
}

// Attempt to extract the value element from the pair
if (!AfxExtractSubString(strValue, strNameValue, 1, _T('=')))
{
// Pass an error message to the debugger for display
OutputDebugString(_T("Error extracting value element
\n"));
continue;
}

// Pass the name, value pair to the debugger for display
CString strOutput = strName + _T(" equals ") + strValue + _T("
\n");
OutputDebugString(strOutput);
}


Original Post : http://neodreamer-dev.tistory.com/244

No comments :

Post a Comment