블로그 이미지
그만봐!! 붉은 기타

카테고리

만땅보기 (6)
넋두리 (0)
PC 팁 (3)
MFC 팁 (2)
하진이 이야기 (0)
이것저것 (0)
Total
Today
Yesterday
MFC를 사용하다 보면 CString을 많이 사용하게 된다.. 역시 배운지 얼마 안된지라 편하면 무조건 우

선적으로 선택하게 된다는.. ㅋㅋㅋ

CString은 문자열을 다룰때 매우 편리한 기능이 많다..

그중 문자열에서 원하는 문자를 찾아낼 수 있는 멤버함수를 알아보자~!!!

먼저 CString을 초기화를 하고 Find라는 멤버함수를 쳐보자..

CString str = "abcd";

int n = str.Find("c");

대충 위의 예제를 보면 어떻게 돌아가는 것인지 짐작이 될것이다..

위와 같이 하면 n에는 2라는 값이 들어갈 것이다.. 바로 "c"의 위치인 2를 반환하는 것이다.

찬찬히 부분동작으로 알아보자!!!

1. CString 초기화~!!

2. Find함수는
int형으로 return하니 return받을 int형 변수를 준비하자!!

3. Find함수를 사용하여 찾을 문자를 인수로 던져주자!!

4. int형 변수를 보며 정확히 가져온것인지 보고 잘했으면 CString을 칭찬해주자!!!


여기서 만약에 "abcdabcd"라는 문자열에서 두번째 a를 찾고 싶다면 다음과 같이 해보자...

CString str = "abcdabcd";

int n = str.Find("a", str.Find("a")+1);

보다시피 Find의 두번째 인수는 문자열에서 문자와 비교를 시작할 위치를 지정해주는 것이다!!

위 동작을 자세히 뜯어보면은...

먼저 CString변수인 str에서 Find함수의 첫번째 인수인
"a"를 찾으려 한다..

이때 Find함수의 두번째 인수로
str.Find("a")+1 들어간다. 여기서 먼저 str에서 첫번째 "a"의 위치

를 찾아 반환하며, 뒤에 붙은
+1로 인해 첫번째 a의 위치 바로 뒤를 지정하게 된다..

이로 인해 우리는 간단히
두번째 a
를 찾아볼 수 있는 것이다..!!!!!

Find함수를 쓰면서 다시 한번 CString의 편리성에 이 초보자는 감격한다.. ㅋㅋ

머.. 돌아다니다보니 형변환시에나 릴리즈 버전으로 작업시 문제점이 있다지만.. 그래도 초보한테는

쓰기 편하면 장땡이라는 안일한 생각을 해본다.. ㅋㅋ
Posted by 붉은 기타
, |

오늘 작업 중 기본기가 안되어 헤매었던 일이 있다.. 포인터에 대한 지대로 개념이 없는지라.. ㅡㅡ;;

사고의 발단은 코딩 중 char 포인터를 new/delete를 이용하여 사용할 일이 있는데 delete에서 자꾸

에러가 나는 것이었다... 소스는 다음과 같았다..

char *sz =  new char[5];
....
delete []sz;

이것이 자꾸 에러를 내뿜는 것이었따.. 우리들의 말많은 이웃들에게 물어보아....

문법상 문제가 없음을 확인하였고, 지푸라기라도 잡는 심경에 여기저기 날림 코딩들을

보고 따라해보아도 마찬가지였다... ㅡㅡ;;

하지만 정작 문제는 개념없는 나에게 있었던 것이었으니...

new char[5]를 해놓고 갖다 쓰는 부분에서 널값을 안남기구 다짜고짜 문자열로 다 채워넣었던

것이었으니... 오호통재라.... ㅡㅡ;;

char포인터는 항상 마지막을 널값으로 해줘야 delete할때 문제가 안생기는 것이었다.. ㅡㅡ

찾아보니 남들은 당연시 하는 것을 몰라 헤매었으니.. ㅜㅜ

역시 기본기가 안되는 상태에서 무작정 안된다고 남의 소스 보고 쫓아하면 안된다는 교훈을..

다시 한번 뼈가 쩌리도록 깨달은 시간들이었따.. ㅡㅡ;;;

Posted by 붉은 기타
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함