逐个读取一个字符串CString中的内容,CString中既有中文也有英文,怎样才能区分读到的是中文还是英文?谢谢!

解决方案 »

  1.   

    读一个BYTE,
    如果这个BYTE的内容<128,就是英文。如果>128,再读一个BYTE,合并起来为一个中文。
      

  2.   

    建议使用_UNICODE编码方式,这样所有的字符(包括汉字和字母)都占两个字节.英文字节的高8位为00,中文字符的高位和低位都不是00
      

  3.   

    先转化为 unicode编码的 wchar *, 然后再判断
    根据某个byte 是否 大于128 判断是不准确的,尤其是对于日文等
      

  4.   

    //mayge you can follow thisCString str = "好好学习good good study";
    CString tmp = "";
    int len = str.GetLength();
    TCHAR chTmp ='\0';
    for(int i=0;i<len-1;){
    chTmp = str.GetAt(i);
    if (chTmp < 0) {//中文字符
    tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));
    cout<<"中文字符: "<<tmp<<endl;
    i+=2;
    }            
    else{
    cout<<"英文字符: "<<str.GetAt(i)<<endl;
    i++;
    }            
    }
      

  5.   

    作如下修改:
    CString str = "好好学习good good study";
    CString tmp = "";
    int len = str.GetLength();
    TCHAR chTmp ='\0';
    for(int i = 0 ; i < len;)
    {
    chTmp = str.GetAt(i);
    if (chTmp < 0) 
    {//中文字符
    tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));
    cout<<"中文字符: "<<tmp<<endl;
    i+=2;
    }            
    else{
    cout<<"英文字符: "<<str.GetAt(i)<<endl;
    i++;
    }            
    }