MFC/WTL字符串转换(CString - char)

本文介绍了在MFC/WTL环境下,如何在Unicode和多字节编码之间转换CString字符串。当VS设置为Unicode时,CString对应为CStringW,多字节时则为CStringA。转换主要通过WIN API以及字符拷贝实现,如示例代码所示,将Unicode的CStringW转换为char类型并在控制台输出。

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

CString:

当VS编码环境为Unicode时,CString就是CStringW。当VS编码环境为多字节时,CString就是CStringA。

在C/C++中同样存在着两种环境的字符串:char 和 wchar_t。

本文的目的是:转换他们。

Code Start :

class UStrToAscChar		//CStringW + wchar_t* -> char*
{
public:
	UStrToAscChar(const CStringW cs)
	{
		int n = WideCharToMultiByte(CP_ACP,0,cs,-1,NULL,0,NULL,NULL);
		if(n <= 0)
			buff = NULL;
		buff = new char[n];
		memset(buff,0,n);
		WideCharToMultiByte(CP_ACP,0,cs,-1,buff,n,NULL,NULL);
	}
	~UStrToAscChar()
	{
		delete buff;
	}
	const char* operator &()	//注意这是成员函数重载了运算符,友元函数重载需要参数
	{
		return buff;
	}
private:
	char* buff;
};

class UStrToWChar		//CStringW ->wchar_t*
{
public:
	UStrToWChar(const CStringW cs)
	{
		int n = cs.GetLength();
		if(n <= 0)
			buff = NULL;
		buff = new wchar_t[n + 1];
		wmemset(buff,0,n + 1);
		for(int i = 0; i < n; i++)
			buff[i] = cs[i];
	}
	~UStrToWChar()
	{
		delete buff;
	}
	const wchar
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值