前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于中文文本的截取

关于中文文本的截取

作者头像
逍遥剑客
发布2019-02-20 12:50:13
7340
发布2019-02-20 12:50:13
举报

从Java转到C++后,对于它的字符串处理能力抱怨了好久 这不,非Unicode下对字符串进行截取有时会出现乱码,因为把一个汉字是两个字节,如果拆开了就显示不正确了

IsDBCSLeadByte

The IsDBCSLeadByte function uses the ANSI code page to determine whether a specified byte is potentially a lead byte that is, the first byte of a two-byte character in a double-byte character set (DBCS).

To use a different code page, use the IsDBCSLeadByteEx function.

BOOL IsDBCSLeadByte(
BYTE    // character to test
);

MSDN里有这个函数,可以判断一个char是不是一个双字节字的开始. 但是,对于汉字来说,第一个字节肯定大于0x80,第二个字节就不一定了,所以,要判断一个字节是不是汉字的一部分,只能从字符串的开头进行扫描:

for (int i = 0; i < text.length(); i+

{

if (IsDBCSLeadByte(text[i])

{

        i++;

//TODO:

    }

}

这样就可以在遇到汉字的时候一次跳过两个字节了  

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2008年03月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IsDBCSLeadByte
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档