티스토리 뷰
Programming Languages/C,C++
MS Visual C++ 10.0 에서 CString을 char * 타입으로 캐스팅 방법
sw편한세상 2011. 3. 26. 19:54MS Visual C++ 10.0(MS Visual Studio 2010)은 Visual C++ 6.0 과 MFC문법이 많이 달라진 것을 볼 수 있다.
이유는 아마 C표준이 wchar_t(유니코드)를 추가해서 그럴것이다.
그 중 가장 많이 달라졌다고 하는 부분은 텍스트 인코딩 관련 부분이다.
대부분 wchar_t 타입이 많아져 _T("string")을 사용하여 define 된거에 맞게 인코딩이 달라지거나 L"string"이나 "string"을 사용하여 유니코드 혹은 ansi 로 인코딩하게 되는데 가장 대표적인 ansi 타입인 char *과 유니코드 타입인(wchar_t) CString을 볼 수 있다.
char * 타입을 CString 타입으로 캐스팅하는 방법은 간단히 CString _uniString = (char*)_ansiString; 으로 변경할 수 있지만 반대의 경우 바로 캐스팅이 되지 않는다.
그래서 인터넷에서 검색하던 중..(아쉽게도 실제 구현이 잘 안돼서..) 소스를 찾았다. 출처는 기억이 안나서..생략
char* StringToChar(CString& str) { long len = str.GetLength(); len = len*2; char *szTemp = new char[len+1]; memset(szTemp, 0, len+1); USES_CONVERSION; strcpy(szTemp, T2A(str)); return szTemp; }
을 선언하고 사용하면 된다. 굳이 MFC가 아니더라도 Visual C++에서 사용하면 된다.
자세한 것을 알아보려면 텍스트를 ANSI, UNICODE, UTF-8로 각각 인코딩한다음 헥사코드로 보면 알 수 있다.
'Programming Languages > C,C++' 카테고리의 다른 글
Assembly의 기초 공부 (0) | 2011.04.23 |
---|---|
윈도우핸들, 프로세스ID, 프로세스핸들 (1) | 2011.04.23 |
TEXT Encoding에 대하여. (2) | 2011.04.23 |
Visual Studio 2010에서 Subversion 사용하기. (SVN) (0) | 2011.03.22 |
Editplus, MinGW로 C, C++ 컴파일하기 - 개발환경구성 (4) | 2009.09.16 |
댓글
11-24 07:06
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday