Windows应用程序--多字节字符与宽字节字符转换

多字节→宽字节使用MultiByteToWideChar()

宽字节→多字节使用WideCharToMultiByte()

函数原型即参数如下:

// 返回目的字符串的长度
int MultiByteToWideChar(
	UINT CodePage,  // CP_CAP实现了ANSI与Unicode之间的转换;CP_UTF8实现UTF-8与Unicode之间的转换
	DWORD dwFlags,  //  一般为0
	LPCTSTR lpMultiByteStr,  // 要转换的多字节字符
	int cchMultiByte,  // 多字节字符的长度,-1时表示自己计算长度
	LPWSTR lpWideCharStr,  // 目的字符串,宽字节字符串
	int cchWideChar  // 目的字符串长度,宽字节字符串的长度
);

// 返回目的字符串的长度
int WideCharToMultiByte(
	UINT codePage,  // CP_CAP实现了ANSI与Unicode之间的转换;CP_UTF8实现UTF-8与Unicode之间的转换
	DWORD dwFlags,   //  一般为0
	LPWSTR lpWideChar,  // 要转换的宽字节字符串
	int cchWideChar,  // 宽字节字符串的字符个数
	LPCSTR lpMultiByte,  // 目的字符串,多字节字符串
	int cchMultiByte,  // 目的字符串中的字符个数
	LPCSTR lpDefaultChar,  // 遇到不能转换的宽字符时,函数使用该参数指向的字符
	PBOOL pfUsedDefaultChar  // 只烧有一个字符不能转换为多字节形式时,该值=TRUE
);

使用示例:

int WINAPI WinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nShowCmd)
{

	int k;  // 字符个数

	// 多字节转换为宽字节
	char chTmp[] = "helloWorld";
	wchar_t* chWideTmp;
	k = MultiByteToWideChar(CP_ACP, 0, chTmp, -1, NULL, 0);  // 获取转换后的宽字节的字符个数
	chWideTmp = new wchar_t[k * sizeof(wchar_t)];
	MultiByteToWideChar(CP_ACP, 0, chTmp, -1, chWideTmp, k);
	MessageBox(NULL, chWideTmp, L"MultiByteToWideChar", MB_OK);

	// 宽字节转换为多字节字符串
	TCHAR tchTmp[] = L"HelloWorld";
	char* cchTmp;
	TCHAR tchTmp1[30];
	k = WideCharToMultiByte(CP_ACP, 0, tchTmp, -1, NULL, 0, NULL, NULL);
	cchTmp = new char[k * sizeof(char)];
	WideCharToMultiByte(CP_ACP, 0, tchTmp, -1, cchTmp, k, NULL, NULL);
	
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值