其实你只需要判断str中是否有~,`!@#$%^&*():;"'<>?.即可

解决方案 »

  1.   


    BOOL Search(CString str) // 这个是你传进来的,要检测的字符串
    { for(int i=0; i<str.GetLength(); i++)
    {
    WCHAR h = str.GetAt(i); 
    if(  (h<0XA0B0 && h>122) || h>0xfef7 || (h>90 && h<97) ||(h>57 && h<65) || h<48) 
    return FALSE;
    }
    return TRUE;
    }
      

  2.   

    3楼的码怎么像我的?:) :)LZ我来的,你这个贴问得好,以前没研究透(现在也不怎么样),才细看了一下,我试的这段没问题(相对于我测试的字符)。
    英文字母与数字无可厚非,很容易。
    关键是汉字编码,而多种编码又不一样。
    最后找到这个:
    http://www.herongyang.com/gb2312/
    得出汉字编码范围0x3300~0x9fff (也许不准,你看看),这之中不包括一些特殊的汉字字符
    [参考]
    http://www.css8.cn/css8_document/gb2312.htm
    http://huggin.bokee.com/3857070.html
    http://www.easydone.cn/014/200604171755489528.htm
    //这是我测的码
    Search(CString & str) // 这个是你传进来的,要检测的字符串
    {
    char tt[1024];
    WCHAR wt[1024];
    memset(tt, 0, sizeof(tt));
    memset(wt, 0, sizeof(wt));
    strcpy(tt, str.GetBuffer(str.GetLength()));
    // str.ReleaseBuffer();
    MultiByteToWideChar(CP_THREAD_ACP, 0, tt, strlen(tt)+1, wt, 256);

    int i = strlen(tt);
    for(int j=0; j<i; j++)
    {
    WCHAR h = wt[j];
    if(h == 0)
    break;
    if(  (h<0x3300 && h>122) || h>0X9fff || (h>90 && h<97) ||(h>57 && h<65) || h<48 )
    return FALSE;//AfxMessageBox("33");
    }
    return TRUE;
    }void CTest0Dlg::OnButton1() 
    {
    BOOL b;
    // CString str(L"日文的平假名及片假名等都在此区编码用户可以UNICODE同现在流行的代码页最显著不同点在于根据需要自己定义此区的编码");
    CString str;
    CStdioFile file;
    file.Open("D:\\蓝绿激光在潜艇通信技术上的应用.txt", CFile::modeRead);
    b = file.ReadString(str);
    while(b)
    {
    b = file.ReadString(str);
    Search(str);
    } file.Close();
    }D:\\蓝绿激光在潜艇通信技术上的应用.txt 如下
    [code=INIFile]蓝绿激光在潜艇通信技术上的应用潜艇上的远程弹道核武器是战略核武器系统中最具有威慑力量的一个支柱
    但也是从控制和指挥方面讲最脆弱的一环这是因为在利用无线电通信时因海水是良导体趋肤效应将严重影响电磁波在海水中的
    传输, 即使是超低频通信系统穿透海水的深度也极有限最深仅达80米而且超低频系统耗资大数据率极低易遭受敌方直接攻击或
    核爆炸电磁脉冲的破坏利用声频信道也因声波的传播速度太慢传输距离和容量都很有限不能保证进行可靠的通信蓝绿激光的工
    作波段是海洋中光传播的窗口 采用蓝绿激光通信, 就可能与全球海洋中活动的潜艇建立起通信通道这样通信时潜艇完全可以不
    用浮出水面而在巡航深度或更深的海水中用自身壳体上的接收器抄收报文丝毫不影响潜艇的活动也不会暴露目标另外利用蓝绿
    激光通信还具有高数据传输率优良的保密性抗干扰性和双工通信的能力美国海军从1977年提出卫星―潜艇通信的可行性后 就与
    美国国防研究远景规划局开始执行联合战略激光通信计划从1980年起以几乎每两年一次的频率进行了迄今为止共6次海上大型蓝
    绿激光对潜通信试验这些试验包括成功进行的12千米高空对水下300米深海的潜艇的单工激光通信试验以及在更高的天空长续航时间的模拟无人驾驶飞机与以正常下潜深度和航速航行的潜艇间的双工激光通信可行性试验证实了蓝绿激光通信能在天气不正
    常大暴雨海水浑浊等恶劣条件下正常进行
    [/code]编码比较复杂,LZ如果有兴趣多研究一下,不要信我一面之辞(我怕又误人子弟)。
      

  3.   

    IsDBCSLeadByteEx()是否汉字 
    isdigit()是否数字 
    isalpha()是否字母
    有那么难吗,还发两个帖子?
      

  4.   

    LS说得对,学习了
    如果LZ不用判断日语或韩语等其它双字节的字符,就用IsDBCSLeadByteEx