免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2683 | 回复: 3
打印 上一主题 下一主题

请-问谁-知道用c++怎么判-断一个字符串中一个字-符是否-是汉字-并把这个汉字打印出来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 17:20 |只看该作者 |倒序浏览
请问谁知道用c++怎么判断一个字符串中的一个字符是否是汉字?并且把这个汉字打印出来

谁有现成的代码,贴给我看看,多谢


我下面贴的这个代码打印不出来这个字符


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
using namespace std;

bool isChineseChar(const unsigned char ch)
{
        return ( ch & 0x80);
}

int main()
{
        string p("aaa好123错ss");
        string::iterator cw;

        cout << p << endl;
        for (cw = p.begin(); cw != p.end(); cw++)
        {
                if (isChineseChar((unsigned char)*cw))
                {
                //      cout<<"是:"<< p.substr((size_t)cw,2)<<endl;
                        cout<<"是:"<< *cw <<endl;
                        cw++;
                }
                else
                {
                        cout<<"是:"<< *cw <<endl;
                }
        }



return 0;
}

论坛徽章:
0
2 [报告]
发表于 2007-08-23 17:39 |只看该作者
每人回答?弹道弹道dddd

论坛徽章:
0
3 [报告]
发表于 2007-08-24 14:19 |只看该作者
bool isChineseChar(const unsigned char ch)
{
    //return ( ch >= 0x80);//&Ocirc;&Uacute;GIS±à&Acirc;&euml;&Ouml;&ETH;&Otilde;&acirc;&Ntilde;ù&Aring;&ETH;&para;&Iuml;
    return (ch > 0xa0); //&Ocirc;&Uacute;&Ouml;&ETH;&Icirc;&Auml;±à&Acirc;&euml;&Egrave;&ccedil;GB2312&Ouml;&ETH;&Otilde;&acirc;&Ntilde;ù&Aring;&ETH;&para;&Iuml;
}

int main()
{
    char *str = "aaa&ordm;&Atilde;123&acute;íss";
    unsigned char *p = (unsigned char *)str;

    while(*p)
    {
        if(isChineseChar(*p))
        {
            printf("&Ecirc;&Ccedil;\n");
            p++;
        }
        else
        {
            printf("%c\n", *p);
        }
        p++;
    }
    Sleep(10000);
    return 0;
}

论坛徽章:
0
4 [报告]
发表于 2007-08-24 14:34 |只看该作者
不好意思,刚才看错了

  1. int main()
  2. {
  3.     string p("aaaºÃ123´íss");
  4.     string::iterator cw;
  5.     char chinese[3] = {0,0,0};

  6.     cout << p << endl;
  7.     for (cw = p.begin(); cw != p.end(); cw++)
  8.     {
  9.         if (isChineseChar((unsigned char)*cw))
  10.         {
  11.             //      cout<<"ÊÇ£º"<< p.substr((size_t)cw,2)<<endl;
  12.             chinese[0] = ((unsigned char)*cw);
  13.             chinese[1] = ((unsigned char)*(cw + 1));
  14.             cout<<"ÊÇ£º"<< chinese <<endl;
  15.             cw++;
  16.         }
  17.         else
  18.         {
  19.             cout<< *cw <<endl;
  20.         }
  21.     }
  22.     return 0;
  23. }
复制代码

[ 本帖最后由 sakulagi 于 2007-8-27 21:13 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP