如题。若正确马上结贴。

解决方案 »

  1.   


    ascii是固定的椰,就是七位嘛。
    中文根本不在这个区啊中文占两字节嘛,区域还不好讲,因为还会扩展嘛
      

  2.   


      中文是占两字节啊,但它拆成两个字节后每个字节也不在ascii的范围吗?
      

  3.   

    附:打印所有汉字的代码int main(int argc, char* argv[])
    {
    int n=0;
    FILE *stream;
    if((stream = fopen("AllGB.txt", "wb")) == NULL)
    {
    printf("Cannot open output file.\n");
    return 0;
    }
    for(unsigned char i=176;i<255;i++)
    {
    for(unsigned char j=161;j<=160+94;j++)
    {
    fwrite(&i,1,1,stream);
    fwrite(&j,1,1,stream);
    }
    fwrite("\r\n",2,1,stream);
    }
    return 0;
    }
      

  4.   


        to horseman28(一天到晚睡觉的鱼) :    好像对了。但怎么我用以下的代码测试不出来的?    void CForbidDlg::OnChangeData() 
    {UpdateData(true);
    int i;
    CString str;
    str="";
    for(i=0;i<m_DATA.GetLength();i++)
        if(m_DATA[i]>=128&&m_DATA[i]<=254)
    str=str+m_DATA[i];
    if(str!="")
    {
    MessageBox(str);
        str="";
    }
    }
      

  5.   

    这个是检测字符串中有多少汉字的代码吗?试试看这个:CString m_DATA = "TEST汉字^@$%^%f234测LKJ试S";
    CString str;for(int i = 0; i < m_DATA.GetLength() - 1; i++)
    {
    unsigned char cl = m_DATA[i], ch = m_DATA[i + 1];
    if(cl > 176 && ch > 161)
    {
    str += m_DATA[i++];
    str += m_DATA[i];
    }
    }
    AfxMessageBox(str);
      

  6.   


       这个问题horseman28(一天到晚睡觉的鱼)的回答是对的。应该结贴了。但能不能再帮我看看为什么我用以下代码测试不出来?这个问题会另外起一贴。请关注。/下面是Edit 的OnChange事件
    //m_DATA是Edit的变量成员
    void CForbidDlg::OnChangeData() 
    {UpdateData(true);
    int i;
    CString str;
    str="";
    for(i=0;i<m_DATA.GetLength();i++)
    {
        if(m_DATA[i]>=176&&m_DATA[i]<=255)
        str=str+m_DATA[i];
    //若果是中文字符则显示出来
    if(str!="")
    {
    MessageBox(str);
        str="";
    }
    }