gpt4 book ai didi

c++ - 更简单的方法来写这个 if 函数 c++

转载 作者:行者123 更新时间:2023-11-30 01:42:12 25 4
gpt4 key购买 nike

有没有更简单的方法来编写这个 if 语句?

int main ()
{
char k[100];
int i=0;
ifstream fd ("info.txt");
while (!in.eof())
{
fd >> k[i]
if (int(k[i]) != 96 || int(k[i]) != 97 ||
int(k[i]) != 98 || int(k[i]) != 99)
i++;
}
}

依此类推直到 122。基本上我想做的就是检查 .txt 文件中的符号是否与所有字母、@ 符号和“.”(句点)匹配

有没有更简单的方法来完成这一切?非常感谢任何帮助!

最佳答案

试试这个:

char c;
while (fd >> c)
{
if ((c < '`') || (c > 'c'))
{
k[i] = c;
++i;
}
}

通常,使用字符常量比它们的 ASCII 十进制等价物更具可读性。

此外,using eof in a loop is considered wrong , 所以把输入操作放在while表达。

由于您的值是连续的,您可以使用 <>运算符以减少比较次数。

编辑 1:
另一种方法是将有效字母放入字符串中并搜索该字符串。

const std::string invalid_letters = "@.abcdefghijklmnopqrstuvwxyz";
while (fd >> c)
{
if (invalid_letters.find(c) == std::string::npos)
{
k[i] = c;
++i;
}
}

您还可以使用 islower检测小写字母。

关于c++ - 更简单的方法来写这个 if 函数 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962927/

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