본문 바로가기

Programming/MFC

[MFC] CString 문자열 파싱하기

오늘은 문자열 파싱에 대해서 간단히 정리한다.

문자열 파싱이란 하나의 문자열에서 각각의 문자들을 분리하는 과정이라고 생각하면 된다.

이 과정을 통해 긴 문자열에서 원하는 문자만 뽑아 임의의 변수로 저장하여 사용할 수 있다.


방법 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 [마크의 맥시멈 라이프]