易码技术论坛

 找回密码
 加入易码
搜索
查看: 148512|回复: 8

怎样判断2个char为一个完整宽字符?

[复制链接]
发表于 2006-2-21 12:14:00 | 显示全部楼层
如果是宽字节字符的话,那么这两个char的值都大于等于0xA0,不过如果是单字节、双字节混杂的字符串,要知道其中任意某一位是双字节或单字节的话是很困难的。那个必须从字符串开头一个一个判断过来。
发表于 2006-2-21 12:28:00 | 显示全部楼层
第一个好像要大于127,第二个无所谓
 楼主| 发表于 2006-2-21 12:39:00 | 显示全部楼层
单字节、双字节混杂的字符串,要知道其中任意某一位是双字节或单字节的话是很困难的。那个必须从字符串开头一个一个判断过来。


开始我也是这样考虑的,但是如果是光标整篇移动,这样一个个判断过来岂不是很慢?还有其它方法吗?
发表于 2006-2-21 13:50:00 | 显示全部楼层
如果是很长的单个字符串的话就需要从头开始,不过如果你的字符串里面有'\n'换行符的话,你可以找到一个离光标最近的换行符,然后从他那里开始判断。
 楼主| 发表于 2006-2-21 13:58:00 | 显示全部楼层
如果是单双字节交替的字符串而整篇没有一个换行符,那我怎么保证光标移动的时候不会插入到某个汉字的中央?
发表于 2006-2-21 14:27:00 | 显示全部楼层
如果你知道光标当前位置的情况,那就可以判断他前后字符的情况。
例如当前光标位置的值是大于等于0xA0的,并且能保证这个位置是一个双字节字符的第一个字节,那么他和他的后面的字节组和成一个双字节字符。
如果你要后移,那就移动两个字节。
如果你要前移,就要判断前面的那个字节是不是大于等于0xA0。如果是那么前面就是一个双字节字符,你要前移两个字节,否则就是单字节字符,只用前移一个字节。
 楼主| 发表于 2006-2-21 15:35:00 | 显示全部楼层
你说的情况我也知道,而我要说的是如果光标整篇移动,怎样保证光标不会插入到某个宽字符的中央?
 楼主| 发表于 2006-2-21 15:38:00 | 显示全部楼层
请问yzk0370有没有其他联系方式比如QQ,邮箱。
 楼主| 发表于 2006-2-21 08:14:54 | 显示全部楼层 |阅读模式
请问各位高手,怎样判断2个char为一个完整宽字符?

我想光标在数组中定位,但不知第N个下标处是否为一个完整的宽字符?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 13:59 , Processed in 0.017806 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表