MFC 에는 몇가지 유용하지만, 사용자들에게 알려지지 않은 함수들이 있습니다.
물론 오늘 살펴볼 AfxExtractSubString() 또한 그런 함수입니다.
AfxExtractSubString() 함수에 대해서는 어떠한 도움말도 참고할수도 없는데,
실제로 MFC 예제에서 위의 함수를 찾아보면 몇몇의 예제가 위의 함수를 사용하고 있는것을 찾을 수 있습니다.
함수가 하는일은 간단합니다.
특정한 문자를 기준으로 sub-string 을 추출하는 함수인데요.
예를들어 다음과 같은경우에 사용하고 있습니다.
아시는 분들이 많지 않겠지만,
MFC AppWizard 가 자동으로 만들어 주는 IDR_MAINFRAME 라는 리소스 스트링에는 프로그램의 이름, document type 그리고 default document type 의 파일에 대한 확장자와 같은 유용한 정보가 있습니다.
그래서 이러한 유용한 정보를 얻기 위해서 다음과 같이
AfxExtractSubString() 함수를 사용할 수 있답니다.
CString fullstring, appname, fileext;
fullstring.LoadString(IDR_MAINFRAME); // 전제 문자열을 읽습니다.
AfxExtractSubString(appname, fullstring, 0, '\n'); //첫번째 sub-string
AfxExtractSubString(fileext, fullstring, 4, '\n'); //4번째 sub-string
앞으로 여러분들이 AfxExtractSubString() 를 함수를 사용하면,
parsing 을 잘못하여 생기는 문제를 막을 수 있겠네요. ^^.
--------------------------------------------------------------------------
여기까지는 퍼온 글이고
내가 이해하기 쉬운 예제를 넣어봐야지
CString str = "192.168.0.1";
CString strA, strB, strC, strD;
AfxExtractSubString(strA, str, 0, '.'); // strA == "192"
AfxExtractSubString(strB, str, 1, '.'); // strB == "168"
AfxExtractSubString(strC, str, 2, '.'); // strC == "0"
AfxExtractSubString(strD, str, 3, '.'); // strD == "1"
위와 같이 나온다.
물론 Win32에 strtok() 함수가 있기는 하지만 MFC 환경에서 작업을 많이하는 요즘에는
AfxExtractSubString() 함수가 더 유용해 보인다.
strtok() 함수도 다음글에 적어본다.
물론 오늘 살펴볼 AfxExtractSubString() 또한 그런 함수입니다.
AfxExtractSubString() 함수에 대해서는 어떠한 도움말도 참고할수도 없는데,
실제로 MFC 예제에서 위의 함수를 찾아보면 몇몇의 예제가 위의 함수를 사용하고 있는것을 찾을 수 있습니다.
함수가 하는일은 간단합니다.
특정한 문자를 기준으로 sub-string 을 추출하는 함수인데요.
예를들어 다음과 같은경우에 사용하고 있습니다.
아시는 분들이 많지 않겠지만,
MFC AppWizard 가 자동으로 만들어 주는 IDR_MAINFRAME 라는 리소스 스트링에는 프로그램의 이름, document type 그리고 default document type 의 파일에 대한 확장자와 같은 유용한 정보가 있습니다.
그래서 이러한 유용한 정보를 얻기 위해서 다음과 같이
AfxExtractSubString() 함수를 사용할 수 있답니다.
CString fullstring, appname, fileext;
fullstring.LoadString(IDR_MAINFRAME); // 전제 문자열을 읽습니다.
AfxExtractSubString(appname, fullstring, 0, '\n'); //첫번째 sub-string
AfxExtractSubString(fileext, fullstring, 4, '\n'); //4번째 sub-string
앞으로 여러분들이 AfxExtractSubString() 를 함수를 사용하면,
parsing 을 잘못하여 생기는 문제를 막을 수 있겠네요. ^^.
--------------------------------------------------------------------------
여기까지는 퍼온 글이고
내가 이해하기 쉬운 예제를 넣어봐야지
CString str = "192.168.0.1";
CString strA, strB, strC, strD;
AfxExtractSubString(strA, str, 0, '.'); // strA == "192"
AfxExtractSubString(strB, str, 1, '.'); // strB == "168"
AfxExtractSubString(strC, str, 2, '.'); // strC == "0"
AfxExtractSubString(strD, str, 3, '.'); // strD == "1"
위와 같이 나온다.
물론 Win32에 strtok() 함수가 있기는 하지만 MFC 환경에서 작업을 많이하는 요즘에는
AfxExtractSubString() 함수가 더 유용해 보인다.
strtok() 함수도 다음글에 적어본다.