C/C++ -- 判断字符串中存在中文

电脑系统中的英文字符串和中文字符最根本的区别就在于:

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

  

  gb2312码表:https://blog.csdn.net/oshan2012/article/details/79070705

方法一:

#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

时间: 2024-10-08 04:02:23

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

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

<?php $str = "测试中文"; echo $str; echo "<hr>"; //if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情况下使用 //if (preg_match("/^[\x7f-\xff]+$/", $str)){ //兼容gb2312,utf-

判断字符串中是否包含中文

public bool CheckChinese(string str) { bool flag = false; UnicodeEncoding a = new UnicodeEncoding(); byte[] b = a.GetBytes(str); for(int i=0;i<b.Length;i++) { i++; if (b[i] != 0) { flag = true; } else { flag = false; } } return flag; }这段代码为什么能实现判断是否为

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

RT,随手写的 1 /** 2 * 判断字符串中是否包含指定字符串 3 * @var source 源字符串 4 * @var target 要判断的是否包含的字符串 5 * @return bool 6 */ 7 function hasstring($source,$target){ 8 preg_match_all("/$target/sim", $source, $strResult, PREG_PATTERN_ORDER); 9 return !empty($strResul

java判断字符串中是否包含汉字

原文:java判断字符串中是否包含汉字 源代码下载地址:http://www.zuidaima.com/share/1550463517428736.htm package com.zuidaima.util; /** *@author www.zuidaima.com **/ public class test { public static void main(String[] args) { String a = "中国China"; for (int i=a.length();

java判断字符串中是否含有汉字

原文:http://www.open-open.com/code/view/1426332240717 判断字符串中是否含有汉字: String str = "test中文汉字"; String regEx = "[//u4e00-//u9fa5]"; /** * 判断有没有中文 */ if (str.getBytes().length == str.length()) { System.out.println("无汉字"); } else {

LeetCode:Valid Number - 判断字符串中内容是否为数字

1.题目名称 Valid Number(判断字符串中内容是否为数字) 2.题目地址 https://leetcode.com/problems/valid-number/ 3.题目内容 英文:Validate if a given string is numeric. 中文:给出一个字符串,检查这个字符串中内容是否是一个数字 例如:"0"." 0.1"."2e10"是数字,"abc"."1 a"不是数字 4

php 判断字符串是否包含中文

正则表达式: /[\x7f-\xff]/ 如: var_dump(preg_match("/[\x7f-\xff]/",'Hello 你好')); 那么它会返回true,因为字符串中包含中文

iOS 判断字符串中含有某个字符串rangeOfString

//_roaldSearchText if([roadTitleLab.text rangeOfString:@"格力"].location !=NSNotFound) NSLog(@"yes"); else NSLog(@"no"); iOS 判断字符串中含有某个字符串rangeOfString,布布扣,bubuko.com

C# 删除字符串中的中文

1 /// <summary> 2 /// 删除字符串中的中文 3 /// </summary> 4 public static string Delete中文(string str) 5 { 6 string retValue = str; 7 if (System.Text.RegularExpressions.Regex.IsMatch(str, @"[\u4e00-\u9fa5]")) 8 { 9 retValue = string.Empty; 10