假设有一个长度 为 200 个字符的字符串,其中包含汉字、英文字母和数字、下划线等。
我如果要截取它的前 50 个字符,并且当第50 个字符恰好为一个汉字的前一个字符时,
这样直接截取它的前50 个字符就会出现乱码,这时我就把这个字符给去掉,只取前49 个字符,怎么做?

解决方案 »

  1.   

    用UNICODE吧,双字节好处理些,如果没有特殊要求的话。
      

  2.   

    如果不用UNICODE,就用_ismbblead 判断一下是不是多字节字符的首字节
      

  3.   

    int n=50;
    char *pi=你的字符串;if(IsDBCSLeadByte(pi[50]))   //如果第50 个字符恰好为一个汉字的前一个字符时
               n=49;再根据n的值进行截取工作。