오늘은 문자열 파싱에 대해서 간단히 정리한다.
문자열 파싱이란 하나의 문자열에서 각각의 문자들을 분리하는 과정이라고 생각하면 된다.
이 과정을 통해 긴 문자열에서 원하는 문자만 뽑아 임의의 변수로 저장하여 사용할 수 있다.
방법 1. AfxExtractSubString() 함수 이용
AfxExtractSubString() 함수를 이용하여 간단하게 문자열을 분리할 수 있다.
다음 예제를 살펴보자
예제 1)
1 2 3 4 5 6 | CString str = "118.131.90.22"; //파싱할 문자열 CString strA, strB, strC, strD; //파싱되는 문자열을 담을 변수선언 AfxExtractSubString(strA, str, 0, '.'); // strA == "118" AfxExtractSubString(strB, str, 1, '.'); // strB == "131" AfxExtractSubString(strC, str, 2, '.'); // strC == "90" AfxExtractSubString(strD, str, 3, '.'); // strD == "22" | cs |
"118.131.90.22"이라는 문자열이 있을 경우, 다음과 같이 구분자 '.'을 이용하여 분리할 수 있다.
AfxExtractSubString('저장할 변수", "파싱할문자열", "파싱할구역", "구분자");
반복되는 특정 문자열이 있을 경우,
혹은 .txt 파일이나 .cvs 파일을 리딩하여 구분자별로 정리하여야 할 경우 사용하기 용이한 함수이다.
방법 2. Find() 함수 이용
일정한 경로에서 특정 부분만 분리한다거나,
반복되는 구분자가 없을 경우 AfxExtractSubString() 함수 만으로는 부족할 경우가있다.
다음의 예제를 살펴보자.
예제 2)
1 2 3 4 5 6 | CString temp = "asdfdasg.gfdh"; int retval= 0; retval = temp.Find('.'); temp = temp.Mid(retval+1); // '.' 뒤에 있는 문자열을 얻을 수 있다. temp == "gfdh" temp = temp.Left(retval); // '.' 전에 있는 문자열을 얻을 수 있다. temp == "asdfdasg" | cs |
출처: http://bigmark.tistory.com/11 [마크의 맥시멈 라이프]
'Programming > MFC' 카테고리의 다른 글
VS2013 mfc static bitmap 추가시 버그 (error RC2108: expected numerical dialog constant) (0) | 2017.07.20 |
---|---|
CString to char (0) | 2017.07.06 |
[winapi] DC에 대해서...(GetDC / BeginPaint) (0) | 2017.07.04 |
timeSetEvent 64bit 오류 (0) | 2017.07.04 |
MFC app MANIFEST for x64 including x86 COMCTL32.dll (0) | 2017.07.04 |