Windows 에서 char 와 TCHAR (WCHAR) 의 상호 전환

1531 단어 windows
원본 주소:http://blog.csdn.net/temotemo/article/details/7464445
/*      WinNls.h  WINBASEAPI  
       
int
WINAPI
MultiByteToWideChar(
    __in UINT     CodePage,
    __in DWORD    dwFlags,
    __in_bcount(cbMultiByte) LPCSTR   lpMultiByteStr,
    __in int      cbMultiByte,
    __out_ecount_opt(cchWideChar) __transfer(lpMultiByteStr) LPWSTR  lpWideCharStr,
    __in int      cchWideChar);

int
WINAPI
WideCharToMultiByte(
    __in UINT     CodePage,
    __in DWORD    dwFlags,
    __in_ecount(cchWideChar) LPCWSTR  lpWideCharStr,
    __in int      cchWideChar,
    __out_bcount_opt(cbMultiByte) __transfer(lpWideCharStr) LPSTR   lpMultiByteStr,
    __in int      cbMultiByte,
    __in_opt LPCSTR   lpDefaultChar,
    __out_opt LPBOOL  lpUsedDefaultChar);
*/

//  char *   TCHAR * WCHAR *
TCHAR convertTemp1[256] = {0};
TCHAR convertTemp2[256] = {0};
bool convertBufferSwitch(false);
TCHAR* CharToTchar(const char* str, int len)
{
	#ifdef _UNICODE 
	TCHAR* temp = convertBufferSwitch ? convertTemp1 : convertTemp2; 
	convertBufferSwitch = !convertBufferSwitch; 
	memset(temp, 0, sizeof(convertTemp1)); 
	MultiByteToWideChar(CP_UTF8, 0, str, len, temp, 256); 
	return temp;
	#else 
	return str;
	#endif
}

// //  TCHAR * WCHAR *   char *
char convertTemp3[256] = {0};
char* TcharToChar(TCHAR* str, int len)
{
	#ifdef _UNICODE 
	memset(convertTemp3, 0, sizeof(convertTemp3)); 
	WideCharToMultiByte(CP_UTF8, 0, str, len, convertTemp3, 256, 0, 0); 
	return convertTemp3;
	#else 
	return str;
	#endif
}

좋은 웹페이지 즐겨찾기