如题 . 可以用CString .
解决方案 »
- 有关socket各方法执行顺序问题
- 一个读线程多个写线程的问题
- 网络通信冲突?
- 巨奇怪的问题!!!!!!!在线等待,回复有分!!!
- 怎样读取未知文件的内容?
- 在Unicode编程下,我用WindowProc截获汉字输入,如果一次输入一个字,没问题。多字时,“你好”就成了“你好?ā??ā??ā?
- how to convert a CStirng to wide character string?
- _RecordsetPtr 的问题
- 调试程序的问题
- 如何用MALLOC分配结构
- ASP与用Delphi编写的COM+之间如何传递数组类型的参数?
- 我有了.net版的VisualAssist注册机,up有分
如:第一个汉字“啊”的内码为 0xb0,0xa1GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfeBIG5范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0xa1~0xfe
一种方法就是 everandforever(Forever) ( ) 的方法,直接判断内码,看这个字节是不是汉字的首字节。另一种方法是使用c++的
int isleadbyte( int c );
作用也是判断一个字节是否是一个字符的首字节,要使用它,你的工程必须使用_UNICODE或者_MBCS预编译符。
一般来讲,默认的工程设置都会使用_MBCS的。
char a; if(a>0)
{
就是汉字字符
}
int _ismbslead( const unsigned char *string, const unsigned char *current );int _ismbstrail( const unsigned char *string, const unsigned char *current );因为判断mbcs字串内一个随机字符是不是lead/trail,需要回朔该字符之前的部分。
简单实用
通常采用unicode,因为unicode 中汉字和其他字符一样只占用一个字, 实现插入删除字符串操作,可以避免类似字符问题的繁琐处理,输出时你可以根据需要做适当转换。
LPTSTR pszSubString; // 检查的位置if ( -1 == _ismbstrail(pszString, pszSubString) )
{
pszSubString ++;
}