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