有汉字字符串的截取 用Unicode来处理吧,如果是多字节字符串可以先MultiByteToWideChar转成Unicode字符串,再WideCharToMultiByte转回来,不过这种做法如果字符串中含有Unicode字符集中未包含的字符则会被改成其它字符。如要避免这种情况只能是逐个字符分析,遇到小于0(大于0x80)的字符时,就表示该字符其后面的一个字符和起来表示一个汉字。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在VC中,汉字是每两个字符才能表示一个汉字的,而且第一个字符的ASCII码也是一个特别的值,只要判断这个值不在0到255之间,就可以断定这个字符是汉字编码的一部分. for( i = 0; i < strlen( ( char * )t ); ) { if ( j >= themax ) { break; } if ( t[ i ] >= 0xA0 && t[ i + 1 ] >= 0xA0 ) { i += 2; } else { i++; } j++; }那个j就是你需要的字符数,而i就是要截取的位置,这种用法在普通的汉字也英文是可以的,只能极个别的字符不符合这个规律。 同意jennyvenus,自己写的函数比系统提供的好多了,另外还需要看你用的是那种编码。 读取内存搜索内存中一段中文字符串 急!在基于CFormView的多文档界面中如何关闭子窗口? 用odbc打开access2000数据库 在工具栏中,错误添加了一个按钮,如何删除? 九.一八 73周年 关于空记录的保存问题??? 用TransmitFile传输大文件。 得到的Access数据库记录集没有及时刷新是何故? 各位路过大虾啊~~~~~~~~~~~~ ~~能推荐几本关于vc比较经典的书籍给我吗~? 我已经试了一上午,总也给不了分,到底怎么了? 我有20张图片,如何让它们随机排列显示? 请指教啊ADO连接数据库的问题
{
if ( j >= themax )
{
break;
}
if ( t[ i ] >= 0xA0 && t[ i + 1 ] >= 0xA0 )
{
i += 2;
}
else
{
i++;
}
j++;
}那个j就是你需要的字符数,而i就是要截取的位置,这种用法在普通的汉字也英文是可以的,只能极个别的字符不符合这个规律。
另外还需要看你用的是那种编码。