求大佬 输入字符 判断字符长度

if (strIn[i] < 0)i++; 如果输入中文字符 执行这个 这段表示没看懂     为什么是<0呢

#include<iostream>
#include<string>
#include<sstream>

using std::string;

int main()
{
	string strIn;
	std::cin >> strIn;

	int length{ 0 };
	for (int i = 0; strIn[i]; i++)
	{
		if (strIn[i] < 0)i++;
		length++;
	}
	std::cout << length;
}

 

这是中文的判断方法,每个中文两个字节,第一个字节是大于128的字符,而string是char*类型,有符号的,所以strIn[i]就是负数,同时i++就是跳过下一个字符,因为它和前面大于128的字符共同组成汉字,length++,中文只需增加一个计数

如果能够理解,请点击采纳,谢谢

因为一个中文是是两个字符,字符的范围超过128,所以取到的值是负数,也就是说如果字符的值是负数就一定是中文。

谢谢老师

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632