分割含有中英文的字符串

本文介绍了如何在C++中处理含有中英文的字符串,要求以每3个字符为单位进行分割,同时涉及对中文和英文的判断。文中提供了一种实现方法,并进行了小结。
摘要由CSDN通过智能技术生成

场景

有一字符串, 字符串中, 包含中文, 英文, 数字, 标点等. 要求以每3个字符为一组, 把这字符串分开. (不是Unicode编码)


说明


1. 如果这字符串只有数字和字母, 那很简单.
2. 如果这字符串只有中文, 那也很简单.
3. 但是这个字符串是中文, 英文等混合的.
4. 如果是Unicode编码也很简单, 但这使用多字节, 也就是中文占用2个字节, 其他字符占用1个字节.


实现方法一

#include <vector>
#include <string>


bool BeChineseFirstCode(unsigned char chData)
{
	return (0xB0 <= chData) && (0xF7 >= chData);	// 汉子第一个字节的范围
}

bool BeChineseSecondCode(unsigned char chData)
{
	return (0xA1 <= chData) && (0xFE >= chData);	// 汉子第二个字节的范围
}

bool BeChinese(unsigned char* pWord)
{
	return BeChineseFirstCode(pWord[0]) && BeChineseSecondCode(pWord[1]);
}

void SplitString(std::vector<std::string>& strVector, std::string& strData, int nCount)
{
	int nLen = strData.length();
	unsigned char* pData = (unsigned char*)strData.c_str();
	int i &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值