C++获取字符串中的中⽂、英⽂、数字等
在 C++ 编程中经常处理 Unicode 编码的字符串,Unicode 通常⽤两个字节表⽰⼀个字符,原有的英⽂编码从单字节变成双字节,只需要把⾼字节全部填为 0 就可以。每⼀个字符在 Unicode 编码表中对应为⼀个编号。例如:B 对应 0042
在 Unicode 编码表中:
数字的编码范围为:0x0030 - 0x0039, ⼩写英⽂字母的范围:0x0061 - 0x007A
⼤写英⽂字母范围:0x0041 - 0x005A,  汉⼦的编码范围: 0x4E00 - 0x9FFF
具体编码对照可以查看:
因此我们获取字符串中的中⽂、英⽂等的思路就是获取每⼀个字符的编码,然后判断编码范围是否在相应的编码范围内,具体代码如下:
std::wstring tempStr = L"";
std::wstring oldStr = "中⽂123*&……9@English”;
for(int i = 0; i < oldStr.length(); ++i)
{
// 获取每个字符的第⼀个字节
unsigned char* pCh = (unsigned char*)&oldStr[i];
// 数字
if((*pCh >= 0x30 && *pCh <= 0x39) && *(pCh + 1) == 0x00)
{
tempStr += oldStr[i];
中文字符unicode查询
}
// ⼤写字母
else if((*pCh >= 0x41 && *pCh <=0x5A)  && *(pCh + 1) == 0x00)
{
tempStr += oldStr[i];
}
// ⼩写字母
else if((*pCh >= 0x61 && *pCh <= 0x7A)  && *(pCh + 1) == 0x00)
{
tempStr += oldStr[i];
}
// 希腊⽂字
else if((*pCh >= 0xB1 && *pCh <= 0xC9) && *(pCh + 1) == 0x03)
{
tempStr += oldStr[i];
}
// 中⽂
else if (((*pCh >= 0) && (*pCh <= 0xff)) && (*(pCh + 1) >= 0x4e && *(pCh + 1) <= 0x9f))
{
tempStr += oldStr[i];
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。