gpt4 book ai didi

C++ : Checking the contents of a string

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:21 24 4
gpt4 key购买 nike

抱歉,我使用的是古老的编译器

#include <iostream.h>
#include <conio.h>
#include <ctype.h>
void main()
{
char s[6] = "mOh1t*";
int u = 0 , l=0 , d=0 , sp=0 , t = 0;
for (int x = 0 ; s[x] ; x++)
{
if (isupper(s[x]))
u++;
else if(islower(s[x]))
l++;
else if (isdigit(s[x]))
d++;
t++;
}
sp = t - (u+l+d);
cout<<"t:"<<t;
cout<<"u:"<<u;
cout<<"l:"<<l;
cout<<"d:"<<d;
cout<<"sp:"<<sp;
getch();
}

上面的代码清楚地统计了一个字符串中字母(大写和小写)的个数、数字的个数和特殊字符的个数。

我想知道是否可以 使用 if 语句/三元运算符/switch case。如果是,我可以得到线索吗?

感谢 HoosierEE 的回答

更新:是否可以在不使用内置函数的情况下执行与 hoosierEE 的回答相同的操作?

- 一个想学习的 C++ 新手

最佳答案

如果你只是想避免 if 语句,你可以将 bool 值视为 0 和 1 并像这样总结字符:

for (int x = 0; s[x]; x++)
{
u += isupper(s[x]);
l += islower(s[x]);
d += isdigit(s[x]);
t++;
}

...但是正如@Angew 提到的那样,您不能依赖这些函数的结果只是 0 或 1。

为了回答UPDATE,这里是你如何在没有 stdlib 函数的情况下实现你想要的:

for (int x = 0; s[x]; x++)
{
u += ((s[x] >= 'A') && (s[x] <= 'Z'));
l += ((s[x] >= 'a') && (s[x] <= 'z'));
d += ((s[x] >= '0') && (s[x] <= '9'));
t++;
}

您可以查找 ASCII values并将数字放在那里,但我认为使用字 rune 字更具可读性。个人喜好。

您还可以考虑对终止条件稍微严格一些:

for (int x = 0; s[x] != '\0'; x++)

关于C++ : Checking the contents of a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com