OFFICE/프로그램

문자 변환하는 방법.

gandus 2012. 11. 28. 08:55

맨날 까먹는다..

개인적인 기억 저장용으로 포스팅합니다.

P.S : 이 프로젝트는 UniCode 기반이라는 전제하에..


1. const char에서 const wchar_t* 로 변환할 수 없습니다.

이 문제는 유니코드를 vs2008부터 지원하면서 생기는 에러다. 문자열을 쓸때 _T()를 사용해야함.


1.1 wchar_t*에서 const char* 블라블라.

char szTemp[ _MAX_PATH ] = { 0 , } ;

WideCharToMultiByte( CP_ACP, 0 , 스트링변수.GetBuffer(), -1, szTemp, _MAX_PATH, NULL, NULL );



2. int -> CString

CString szBuff;

szBuff.format(_T("%d") , int Value);


3. CString -> int

int Value = _ttoi(CString Value);




4. CString -> char*

4.1 ( 멀티바이트 환경에서 사용할수 있다 )

CString szBuff;

szBuff = _T("Test Text");

char *chBuff = LPSTR(LPCTSTR(szBuff));


4.2 

CString szBuff = _T("아아아");

int nStrLen = szBuff.GetLength();

char* chBuff = new char[nStrLen + 1];

WideCharToMultiByte(CP_ACP, 0, szBuff, -1, chBuff, nStrLen+1 , NULL, NULL);

Delete chBuff;


4.3  ( 유니코드 환경에서 사용할수 있다. )

CString szBuff = _T("아아아2");

char* chBuff = new char[ szBuff.GetLength() + 1 ];

strcpy( chBuff , CT2A(szBuff) );



5. char* -> CString

char chBuff[] = "Hello";

CString szBuff;

szBuff.format(_T("%s", chBuff);



6. CString -> WCHAR*

CString strFileName = _T("ControlData.xml");

WCHAR* wszName = strFileName.GetBuffer( strFileName.GetLength() );


출처 - http://blog.naver.com/anno414/140161111271