电脑系统中的英文字符串和中文字符最根本的区别就在于:
1、英文的 ASCII 码,其最高位为 0,占一个字节
注:英文的ASCII码范围是在0到127,二进制为(0000 0000 ~ 0111 1111)
2、中文的 ASCII 码,其最高位为 1。占两个字节,
注:两个字节的最高位都是1
因此可以看出,可以拿字符串中的每个字节和ASC||的最高位也就是0x80(1000 0000)比较,如果一开始并且有两个连续的字符比0x80大,那么这两个字符合在一起为一个中文
 

再例如:若需要处理的字符是汉字的话,那么其 ASCII 码最高位为 1。位于汉字符号区的区位码,第一个汉字是从“啊”字开始的,其区位码是:1601,但是它的汉字内码是这样计算的:
  区码 16:16+160 = 176,转换成十六进制:B0,其对应的二进制为:10110000
  位码 01:01+160 = 161,转换成十六进制:A1,其对应的二进制为:10100001
方法一:
#include <stdio.h>
#include <string.h> int main()
{
char sztext[] = " 是ciw.";
char c = 0;
char szchinese[3] = {0}; int i = 0, nlen = strlen(sztext);
for(; i < nlen; i++)
{
  //不是全角字符
  if( sztext[i] >= 0 && sztext[i] <= 127 )
  c = sztext[i], printf("%c\n", c);
  //是全角字符
  else
  {
    szchinese[0] = sztext[i], szchinese[1] = sztext[i + 1];
    printf("%s\n", szchinese);
    i++; //中文是2个字节,所以i++
  }
}
return 0;
}
注:全角字符,简单来讲就是占两个字节的中文
半角字符就是0~127的ASCii码
 
方法二:
#include <stdio.h>
//返回0:无中文,返回1:有中文
int IncludeChinese(char *str)
{
char c;
while(1)
{
c=*str++;
if (c==0) break; //如果到字符串尾则说明该字符串没有中文字符
if (c&0x80) //如果字符高位为1且下一字符高位也是1则有中文字符
if (*str & 0x80) return 1;
}
return 0;
}

原文地址:https://www.cnblogs.com/goul/p/10274171.html

C/C++ -- 判断字符串中存在中文的更多相关文章

  1. 使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...

  2. [C#]判断字符串中是否包含中文

    关键代码: /// <summary> /// 判断字符串中是否包含中文 /// </summary> /// <param name="str"&g ...

  3. PHP判断字符串中是否含有中文

    <?php $str = "测试中文"; echo $str; echo "<hr>"; //if (preg_match("/^[ ...

  4. java判断字符串中是否包含中文 过滤中文

    package com.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test ...

  5. Python如何判断字符串中是否有中文

    解决:Python如何判断字符串中是否有中文 In [240]: s Out[240]: '你好aa' In [241]: for i in s: ...: if u'\u4e00' <= i ...

  6. java 判断字符串中是否包含中文并过滤掉中文

      java判断字符串中是否包含中文并过滤掉中文 CreateTime--2017年9月6日08:48:59 Author:Marydon 1.判断字符串中是否包含中文方法封装 /** * 判断字符串 ...

  7. java判断字符串中是否含有中文

    /** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...

  8. python 判断字符串中是否只有中文字符

    python 判断字符串中是否只有中文字符 学习了:https://segmentfault.com/q/1010000007898150 def is_all_zh(s): for c in s: ...

  9. PHP判断字符串中是否包含指定字符串,支持中文哦

    RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...

随机推荐

  1. Mysql union和union all用法

    1: 什么时候用union和union all ?    我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候 就需要用到union和union ...

  2. flume-ng version出现错误Error: Could not find or load main class org.apache.flume.tools.GetJavaPrope的解决办法

    错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty或者Error: Could not find or load main class org. ...

  3. alt和title的区别

    alt是html标签的属性,而title既是html标签,又是html属性. 在图像标签img中,除了常用的宽度width和高度height属性之外,还有两个比较重要并且也会用到的属性,就是alt和t ...

  4. jmeter第一次使用

    创建线程组 依次创建后,在http请求页面填入接口地址,参数,头信息,点击运行,然后查看结果树

  5. ajax+jquery上传图片

    利用ajax进行图片上传,啥也不说了,上代码~ <input type="file" id="uploadImg"> <span  oncli ...

  6. Windows如何打开/关闭 服务

    先右键Windows主菜单,点击计算机管理: 点击服务和应用程序: 点击服务:

  7. 使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。

    关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Applic ...

  8. Guava【google】

    Guava 是什么? Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库.这个库是为了方便编码,并减少编码错误.这个库提供用于集合,缓存,支持原语,并发性,常见注解, ...

  9. visual studio调试exe程序

    标题:How to debug and profile any EXE with Visual Studio 文章:https://devblogs.microsoft.com/visualstudi ...

  10. JVM学习总结

    JVM指令执行流程架构图: