char数组中有中文有英文
我想在某处加入换行符,
我如何知道我加入换行符的地方是否刚好在中文中间。

解决方案 »

  1.   

    用ASCII码的范围来判断呗,可以到网上搜搜。
      

  2.   

    一般来说中文是由两个字节组成,且第一个字节的值是大于129的简单的方法就是判断插入位置后的第一个字节是不是小于0If (at(index) < 0)  cout << ”是汉字” << endl;
    else   cout << ”不是汉字” << endl;名称       第一字节             第二字节 
    GB2312 0xB0-0xF7(176-247)  0xA0-0xFE(160-254) 
    GBK    0x81-0xFE(129-254) 0x40-0xFE(64-254) 
    Big5   0x81-0xFE(129-255) 0x40-0x7E(64-126)
                                   0xA1-0xFE(161-254)
      

  3.   

    你是要在汉字与英文之间插入么,那定义两个指针指向数组,然后移动数组,找到一个指针是A-Z的ACSII码内,另一个在之外的地方插入
      

  4.   

    int   IsGB(PTSTR   pText)   
    {   
    unsigned   char   sqChar[20];   
    sqChar[0]=*pText;   
    if   (sqChar[0]>=0xa1)   
    if   (sqChar[0]==0xa3)   
    return   1; //全角字符   
    else   
    return   2; //汉字   
    else   
    return   0; //英文、数字、英文标点   
     } 
      

  5.   

    谢谢大家,我还是没有解决问题我再说详细一点我给客户填写资料,里面有英文也有中文我希望每15个字符加入"\r\n"当第15 ,16刚好组成一个汉字的时候,在第16个字符的时候加入“\r\n"判断第15个字符为中文时,我如何知道在15个字符后加入"\r\n"还是在第16个字符后面加 
      

  6.   

    用TCHAR不就好了- -
    判断都不用- -
      

  7.   

    干嘛不用Unicode宽字符,每个字符都是双字节
      

  8.   

    这也是把文件转成unicode就行了。
    只要判断30是不是00,如果是,英文,不是就是汉字。