일반적으로 MFC 프로그램을 작성 할때는 문자열을 다루기 위해 CString 클래스를 사용한다.

이 클래스는 CString 이라는 대표 이름이 있고, 프로젝트 옵션이 Multi byte 인 경우는 CStringA 로 UniCode 인 경우는 CStringW 로 자동 변환된다.

그러나 C++ Standard Library 의 string 은 그렇지 못한데, 이는 string이 대표 이름이 아니라 Multi byte string 의 클래스명이기 때문이다.
Unicode 의 경우는 wstring 으로 되어 있다.

이것을 자동으로 해결 하는 방법은 여러가지 있을것인데.. 대표적인 것으로 #ifdef 를 이용한 조건부컴파일이다.
하지만 이건 귀찮다.. 상당히

하지만 string 자체가 Templete 클래스라는것을 이용하면 간단히 해결 할 수 있다.
실제 string 과 wstring은

typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;

으로 선언 되어 있다.
그럼 답은 간단하지 않은가? string 을 선언할때

basic_string<TCHAR> 으로 선언 하면 된다. 그럼 간단하게 Unicode 와 Multibyte 양쪽에서 자동으로 변환 되는 문자열이 완성된다 : )



PS. 사실 이 팁은 쓸곳이 매우 한정되어있다.
왜냐면 모든 프로젝트를 Unicode 로 하는것이 퍼포먼스가 더 좋기 떄문이다(실제 Win32 Native API 에선 아예 Ansi 함수는 있지도 않으며, Win32API 에서 Ansi함수를 호출하면 자동으로 Unicode로 변환 후 Wide 함수를 재 호출한다)

즉 범용적인 라이브러리를 만들어 팔아먹을경우(그것도 소스포함 =_=;) 가 아니면 쓸데가 전혀없다

분류 :
Visual C++
조회 수 :
15572
등록일 :
2009.03.19
12:21:53 (*.214.68.101)
엮인글 :
http://www.lunapiece.net/3764/57a/trackback
게시글 주소 :
http://www.lunapiece.net/3764
문서 첨부 제한 : 0Byte/ 10.00MB
파일 제한 크기 : 10.00MB (허용한 확장자만 첨부할 수 있습니다.(관리자는 제외) : *.*)
옵션 :
:
:
:
:
List of Articles
번호 제목 글쓴이 날짜 조회 수
41 Win32 Windows에서 패킷스니핑 할 때 주의할점 Lyn 2009-12-15 11575
40 Win32 Process가 Open 한 Port 보는 프로그램 Lyn 2009-12-15 9162
39 Win32 Vista 프로세스 Admin 권한 상승 여부 알아내기 Lyn 2009-12-09 13922
38 Win32 CreateCompatibleBitmap 사용시 주의할점 Lyn 2009-12-01 13052
37 Win32 IJL Intel Jpeg Library 사용시 주의할 점 Lyn 2009-11-26 13155
36 Win32 Edit 에서 원하는 위시로 캐럿 옮기기 Lyn 2009-09-24 11181
35 Delphi / BCB Delphi 2005~ 2009 IDE 를 Delphi7 스타일로 [1] Lyn 2009-09-07 10814
34 Pure C++ new , new [] 연산자 오버로딩 하기 Lyn 2009-08-12 11780
33 Pure C++ C++ 헤더 중복 방지하기 Lyn 2009-04-20 12701
32 Win32 SendMessage로 문자열 날리기(WM_COPYDATA) Lyn 2009-04-20 196544
31 Visual C++ Visual C++ 2008 Class Diagram file Lyn 2009-04-20 15407
» Visual C++ 프로젝트 옵션에 따른 string wstring 자동변환 Lyn 2009-03-19 15572
29 Delphi / BCB C++ Builder 단독 실행파일 만들기 Lyn 2009-03-16 14551
28 Win32 메세지 처리시 WPARAM, LPARAM 타잎 차이 Lyn 2009-02-05 13090
27 Win32 DLL의 전역변수 충돌 피하는 꽁수 Lyn 2009-01-23 13157
26 Visual C++ 사용자 정의 메세지 핸들러 만들기 Lyn 2009-01-23 15319
25 Win32 Global HotKey(전역 단축키) 사용하기 Lyn 2008-10-24 19595
24 Win32 내 프로그램에 다른 프로그램 내장하기. [1] Lyn 2008-10-08 16368
23 Visual C++ VC++에서 STL 의 성능이 만족스럽지 않은경우 Lyn 2008-09-27 18532
22 Visual C++ VC++(Native) 에서 C#(.net) 의 DLL 호출하기 Lyn 2008-09-27 20291

SITE LOGIN :)