블로그 이미지
frostguy

카테고리

분류 전체보기 (48)
사진 (3)
Study (40)
IT (3)
Total141,177
Today0
Yesterday25
정규식을 이용하면 문자열 처리를 보다 다양하고 간편하게 처리할 수 있다는 것을 알아 보았다.

ANSI 코드 문자열을 Unicode 문자열로 변환하기 위해서는 "xxx" -> _T("xxx") 로 치환해 주어야 한다.
전처리기 _T(x) 는 다음과 같이 정의되어 있다.
 
#define _T(x)       __T(x)
#define _TEXT(x)    __T(x)
  
#ifdef  _UNICODE
  #define __T(x)      L ## x
#else
  #define __T(x)      x
#endif

_UNICODE       이면 L"xxx"로 치환,
_UNICODE가 아니면   "xxx"로 치환.

그렇다면 단순히 "xxx"를 찾아서 _T("xxx")로 치환해 주면 간단히 유니코드를 지원하는 문자열이 된다. ("말이 쉽지 어느 세월에 다 바꾸냐?" 하고 생각하시는 분들은 아랫글을 봐 주세요. ^^; )

그래서 짜잔!! 정규식의 활용 2번째. 말이 길어지면 지루해지는 법. 결과부터 볼까요?


왼쪽의 소스코드에는 "xxx" 와 같은 문구가 4번 등장한다.
  • #include "stdafx.h" 보라색 밑줄
  • main() 안의 초록색 밑줄

그리고 오른쪽의 바꾸기 탭에 "찾을 내용"과 "바꿀 내용" 그리고 찾기 옵션의 정규식 부분을 잘 보자!

찾을 내용 : (#으로 문장이 시작되고, "를 만날때까지)를 무시하고, ("로 시작해서 "가 아닌 문자열들을 포함하고 "로 끝나는 부분)을 찾는다.

~(^\#[^"]*)("[^"]*")

바꿀 내용 : \0 위에서 파란색 괄호에 둘러쌓인 부분을 선택하고, 앞에는 _T(를 붙이고 뒤에는 )를 붙인다.
_T(\0)

이렇게 전체 바꾸기를 수행한 다음 결과를 보도록 하자.

위와 같이 #으로 시작하는 "xxx" 부분(보라색 밑줄)은 바뀌지 않았고,
#으로 시작하지 않는 "xxx" 부분(초록색 밑줄)이 _T("xxx")로 치환 되었다.

MSDN 참조 : http://msdn.microsoft.com/ko-kr/library/aa293063(VS.71).aspx
                  http://msdn.microsoft.com/ko-kr/library/2k3te2cs(VS.80).aspx


출처 : http://www.npteam.net/689

Posted by frostguy

최근에 달린 댓글

글 보관함