问题描述
- c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度
-
我在统计中文的时候出现了问题,请各位大神指教一下
#include
#include
using namespace std;
int main()
{string str; cout << "请输入一个字符串,以换行为结束!n"; getline(cin, str); size_t count = 0; size_t spaceNum=0; size_t letter=0; size_t chineseNum=0; size_t other=0; for(size_t i = 0; i < str.size(); i++) //如果变量i 小于等于字符串str长度的时候,就继续循环,反之 循环结束 if(isdigit(str[i])) //判断是否是数字 count++; else if(isspace(str[i]))//判断是否是空格 ++spaceNum; else if(isalpha(str[i]))//判断是否是字母 ++letter; else if(str[0]>=0xB0) ++chineseNum; else ++other; cout<<"字符串所占字节"<<sizeof str<<"n"<<endl; cout << "数字的个数为: " << count <<"n"<< endl; cout<<"空格的个数是"<<spaceNum<<"n"<<endl; cout<<"字母的个数是"<<letter<<"n"<<endl; cout<<"其他字符的个数是"<<other<<"n"<<endl; cout<<"中文的个数是"<<chineseNum<<"n"<<endl; system("pause");
}
解决方案
我发现你所显示的代码中函数没有反回值
解决方案二:
一个中文占两个字符,当你判断到是汉字时,还是 i++就不对了吧
解决方案三:
else if(str[0]>=0xB0)(str[0]<0来判断是否中文)
解决方案四:
str[i]不是str[0]
解决方案五:
逻辑上出问题了吧,你统计中文,但除了你的那几个if,else的情况,还是有情况既不是中又不是字母,数字,而是符号吧
解决方案六:
中文是占二个字节的。你的代码实现不了这个功能
解决方案七:
将string str;换为char str[一个常数];cin.getline(str,一个常数);改成这样就行了
时间: 2024-09-20 18:44:15