用Unicode来处理吧,如果是多字节字符串可以先MultiByteToWideChar转成Unicode字符串,再WideCharToMultiByte转回来,不过这种做法如果字符串中含有Unicode字符集中未包含的字符则会被改成其它字符。如要避免这种情况只能是逐个字符分析,遇到小于0(大于0x80)的字符时,就表示该字符其后面的一个字符和起来表示一个汉字。

解决方案 »

  1.   

    在VC中,汉字是每两个字符才能表示一个汉字的,而且第一个字符的ASCII码也是一个特别的值,只要判断这个值不在0到255之间,就可以断定这个字符是汉字编码的一部分.
      

  2.   

    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就是要截取的位置,这种用法在普通的汉字也英文是可以的,只能极个别的字符不符合这个规律。
      

  3.   

    同意jennyvenus,自己写的函数比系统提供的好多了,
    另外还需要看你用的是那种编码。