오늘은 문자열 파싱에 대해서 간단히 정리한다.
문자열 파싱이란 하나의 문자열에서 각각의 문자들을 분리하는 과정이라고 생각하면 된다.
이 과정을 통해 긴 문자열에서 원하는 문자만 뽑아 임의의 변수로 저장하여 사용할 수 있다.
방법 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"
일단 여기까지,
다른 작업이 생겨서 급하게 포스팅을 마무리한다.
'works' 카테고리의 다른 글
[MFC] Cstring <-> Char* 형변환 (0) | 2012.12.26 |
---|---|
[MFC] 리스트컨트롤(List Control) 사용 Tip (0) | 2012.12.26 |
[MFC] YCbCr <-> RGB 변환 (0) | 2012.12.26 |
[C] 디렉토리(폴더)의 모든 파일을 제거 (0) | 2012.12.26 |
[C] rand 함수를 이용하여 난수(랜덤) 발생시키기 (0) | 2012.12.26 |
[MFC] 리스트컨트롤(List Control) 클릭한 곳의 index값 얻어오기 (0) | 2012.12.24 |
[MFC] 다이얼로그에 다이얼로그 붙이기 (1) | 2012.12.24 |
[C] return 0, return 1, return -1 의미 (0) | 2012.12.24 |
[MFC] Main Frame 핸들 얻어오기 (2) | 2012.12.24 |
[MFC] 자식 dialog에서 부모 dialog변수 및 함수 참조 (0) | 2012.12.24 |