// CString → Char
char* StringToChar(CString str)
{
char *szStr = NULL;
#if defined(UNICODE) || defined(_UNICODE)
int nLen = str.GetLength() + 1;
TCHAR *tszTemp = NULL;
tszTemp = new TCHAR[nLen];
memset(tszTemp, 0x00, nLen*sizeof(TCHAR));
_tcscpy(tszTemp, str);
// Get size (실제사용되는바이트사이즈)
int nSize = WideCharToMultiByte(CP_ACP, 0, tszTemp, -1, NULL, NULL, NULL, NULL);
szStr = new char[nSize];
memset(szStr, 0x00, nSize);
WideCharToMultiByte(CP_ACP, 0, tszTemp, -1, szStr, nSize, NULL, NULL);
if(tszTemp)
{
delete [] tszTemp;
tszTemp = NULL;
}
#else
int nLen = str.GetLength() + 1;
szStr = new char[nLen];
memset(szStr, 0x00, nLen);
strcpy(szStr, str);
#endif
return szStr;
}
// CString → TCHAR
TCHAR* StringToTCHAR(CString str)
{
TCHAR *tszStr = NULL;
int nLen = str.GetLength() + 1;
tszStr = new TCHAR[nLen];
memset(tszStr, 0x00, nLen*sizeof(TCHAR));
_tcscpy(tszStr, str);
return tszStr;
}
// Char → CString
CString CharToString(char *str)
{
CString cStr;
#if defined(UNICODE) || defined(_UNICODE)
int nLen = strlen(str) + 1;
TCHAR *tszTemp = NULL;
tszTemp = new TCHAR[nLen];
memset(tszTemp, 0x00, nLen*sizeof(TCHAR));
MultiByteToWideChar(CP_ACP, 0, str, -1, tszTemp, nLen*sizeof(TCHAR));
cStr.Format(_T("%s"), tszTemp);
if(tszTemp)
{
delete [] tszTemp;
tszTemp = NULL;
}
#else
cStr.Format("%s", str);
#endif
return cStr;
}
// Char → TCHAR
TCHAR* CharToTCHAR(char *str)
{
TCHAR *tszStr = NULL;
#if defined(UNICODE) || defined(_UNICODE)
int nLen = strlen(str) + 1;
tszStr = new TCHAR[nLen];
memset(tszStr, 0x00, nLen*sizeof(TCHAR));
MultiByteToWideChar(CP_ACP, 0, str, -1, tszStr, nLen*sizeof(TCHAR));
#else
int nLen = strlen(str) + 1;
tszStr = new TCHAR[nLen];
memset(tszStr, 0x00, nLen*sizeof(TCHAR));
_tcscpy(tszStr, str);
#endif
return tszStr;
}
// TCHAR → CString
CString TCHARToString(TCHAR *str)
{
CString cStr;
cStr.Format(_T("%s"), str);
return cStr;
}
// TCHAR → Char
char* TCHARToChar(TCHAR *str)
{
char *szStr = NULL;
#if defined(UNICODE) || defined(_UNICODE)
int nSize = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, NULL, NULL, NULL);
szStr = new char[nSize];
memset(szStr, 0x00, nSize);
WideCharToMultiByte(CP_ACP, 0, str, -1, szStr, nSize, NULL, NULL);
#else
int nLen = strlen(str) + 1;
szStr = new char[nLen];
memset(szStr, 0x00, nLen);
strcpy(szStr, str);
#endif
return szStr;
}
<출처> http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8562&page=1
'Programming > MFC' 카테고리의 다른 글
Excel Driver 사용한 CDatabase 오류 (0) | 2017.10.20 |
---|---|
무료 라인 차트 (0) | 2014.05.27 |
MFC 문자가 한글인지 검사/체크하는 방법들 (0) | 2013.01.30 |
컨트롤을 상속 클래스, NM_CLICK 가 부모윈도우에 통지가 안될때.. (2) | 2010.12.03 |
ini 에서 섹션(Section) 정보 얻기 - GetPrivateProfileSectionNames (6) | 2010.08.13 |
CListCtrl 파일로 저장 - CListCtrl Save, Load (0) | 2010.08.12 |
CImageList Class (0) | 2008.10.08 |
MFC 에서 서로 다른 클래스의 핸들 얻어오기 (1) | 2008.05.30 |