Windows下char与TCHAR(WCHAR)相互转换

本文介绍了一个简单的函数实现,用于在UTF-8编码下将char*类型字符串转换为TCHAR*或WCHAR*类型,并反过来进行转换。该方法适用于Unicode环境下不同编码间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: 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
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值