Qt5(Qt4应当也可以)中文的转换(只针对windows)

本文探讨了在Qt环境下使用中文字符与wchar_t编码的方法,通过直接使用wchar_t数组并配合QString的resize和memcpy函数,实现中文字符串的高效处理,避免了Qt内部的多次转码过程。

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

Qt中使用中文也不算麻烦,只是到处都要用QTextCodec* toUnicode一下,好奇到底Qstring是怎么编码的,我对unicode标准也没兴趣了解,只是 dump 下,看下wchar_t怎么不能用。测试代码:

wchar_t* pWideString = L"我们的大中国";
QString str = pLocale->toUnicode("我们的大中国");

然后逐一比较,根据测试及相应的printf dump出来的结果,在Qt中QString保存的编码和wchar_t一致。嗯,这就好办了:

 

	QString str;
	const wchar_t* pWideString = L"我要显示乱码!";
	str.resize(lstrlenW(pWideString));
	memcpy(str.data(), pWideString, lstrlenW(pWideString) * sizeof(wchar_t));


这样至少在windows下不需要Qt逐步的转码,呵呵,一样的目的,不一样的手段。

 

QString MakeQString(const wchar_t* pUnicodeString)
{
	QString tmpStr;
	tmpStr.resize(lstrlenW(pUnicodeString));
	memcpy(tmpStr.data(), pUnicodeString, lstrlenW(pUnicodeString) * sizeof(wchar_t));
	return tmpStr;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值