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

导读:本篇文章讲解 Windows应用程序–多字节字符与宽字节字符转换,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

多字节→宽字节使用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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/46211.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!