본문 바로가기
개발 TIP/개발 TIP

정규식을 이용해서 ""를 _T("") 형식으로 바꾸자!

by izen8 2012. 7. 17.
반응형

정규식을 이용하면 문자열 처리를 보다 다양하고 간편하게 처리할 수 있다는 것을 알아 보았다.

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

반응형

댓글