VC win32中的各种字符型和相互转换

在win32编程的时候, 各种字符串相关的宏往往搞的头昏眼花, 为了方便今后参考, 随笔记录一下。

持续补充中...


类型转换

string->LPCWSTR

LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。

LPCWSTR StringHelper::ToLPCWSTR(const string& str)
{
	size_t origsize = str.length() + 1;
	size_t convertedChars = 0;
	// malloc 申请能存放足够长str字符的wchar_t类型大小的内存空间
	wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(str.length()-1));
	mbstowcs_s(&convertedChars, wcstring, origsize, str.c_str(), _TRUNCATE);
	std::wstring wstrResult(wcstring);
	free(wcstring); 
	return wstrResult.c_str();
}

int->string

string StringHelper::ConvertFromInt(const int n)
{
	char buf[50];
	sprintf_s(buf,50,"%d",n);
	return buf;
}


int->CString

CString CStringUtil::FromInt(const int i)
{
	CString str;
	str.Format(_T("%d"), i);
	return str;
}


string->int

可以使用C++提供的atoi函数(ASCII to integer 的缩写

string str;
int i = atoi(str.c_str());

string->CString

可以直接用string类型的c_str()方法转换,如:

string str;
str.c_str();

CString->string

可以使用CString类型的getBuffer(0)方法进行转换,如:

CString cstr;
cstr.getBuffer(0);
// 如何后续还要对cstr进行赋值等处理,并会动态改变其长度,则调用releaseBuffer方法
cstr.releaseBuffer();

const char*->string

string 是有完善接口的容器。
const char* 是c风格的字符串。
可以使用string的构造函数直接转换。

string str(const char* c);

const char*->CString

CString CStringUtil::FromChar(const char* c)
{
	CString str;
	str.Format(_T("%s"), c);
	return str;
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值