본문 바로가기

업무 채널

[MFC] 문자열 파싱하기

오늘은 문자열 파싱에 대해서 간단히 정리한다.
문자열 파싱이란 하나의 문자열에서 각각의 문자들을 분리하는 과정이라고 생각하면 된다.

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

 

방법 1. AfxExtractSubString() 함수 이용

AfxExtractSubString() 함수를 이용하여 간단하게 문자열을 분리할 수 있다.

다음 예제를 살펴보자

 

예제 1)

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"

 

"118.131.90.22"이라는 문자열이 있을 경우, 다음과 같이 구분자 '.'을 이용하여 분리할 수 있다.

AfxExtractSubString('저장할 변수", "파싱할문자열", "파싱할구역", "구분자");

 

반복되는 특정 문자열이 있을 경우,

혹은 .txt 파일이나 .cvs 파일을 리딩하여 구분자별로 정리하여야 할 경우 사용하기 용이한 함수이다.

 

 

방법 2. Find() 함수 이용

일정한 경로에서 특정 부분만 분리한다거나,

반복되는 구분자가 없을 경우 AfxExtractSubString() 함수 만으로는 부족할 경우가있다.

다음의 예제를 살펴보자.

 

예제 2)

CString temp = "asdfdasg.gfdh";

int retval= 0;

retval = temp.Find('.');

temp = temp.Mid(retval+1); // '.' 뒤에 있는 문자열을 얻을 수 있다. temp == "gfdh"

temp = temp.Left(retval); // '.' 전에 있는 문자열을 얻을 수 있다. temp == "asdfdasg"

 

 

일단 여기까지,

다른 작업이 생겨서 급하게 포스팅을 마무리한다.