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

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

2008/12/15 20:03 2008/12/15 20:03

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요

  1. 비밀방문자 2009/04/03 17:32 고유주소 고치기 답하기

    관리자만 볼 수 있는 댓글입니다.

    • TTF 2009/04/04 15:42 고유주소 고치기

      제 블로그의 자료는 언제나 퍼가셔도 좋습니다.

      블로깅을 하고 퍼가지 못하게 하려면, 비공개로 글을 작성했을테니까요.

      그리고 출처 남겨 주신것은 감사드립니다.