【发布时间】:2015-01-24 20:59:13
【问题描述】:
我正在尝试编写一个小程序来确定字符串是否为回文。自然,我想忽略任何不是字母的字符。我计划通过将它们的 ASCII 值与我确定的值进行比较来检查字符串的每个元素来实现这一点:[65,90] U [97,122]
以下代码是一个函数的一段,其中传入了一个字符串string aStrn。
while(aStrn[index] != '\0')
{
if(aStrn[index] > 64 && aStrn[index] < 91 && aStrn[index] > 96 &&
aStrn[index] < 123)
{
ordered.Push(aStrn[index]);
}
index++;
}
我通过显式定义if(aStrn[index] != ' ' && aStrn[index] != '\''... 等参数来测试这段代码,它运行良好。但是,当我尝试上面显示的方法时,ordered 仍然为空。
我一生都无法弄清楚原因,因此非常感谢所有帮助。我也知道可能有更好的方法来解决这个问题,但我仍然想了解为什么这不起作用。
【问题讨论】:
-
怎么可能同时小于 91 和大于 96?
-
...哎呀。
||传入... -
请不要使用 ASCII 值。请改用字符文字,例如
'A'。字符文字使您的代码更易于阅读。否则,有些人可能不得不尝试找到一个 ASCII 图表来读取您的代码(我没有记住 十进制 值)。
标签: c++ arrays string comparison ascii