所以我需要将输入文本中的某些字母与'z'交换但由于某种原因我的检查不起作用。这是代码:
bool CheckLetter(int x) {
if(nm[0][x] == 'a' || 'e' || 'i' || 'o')return true;
return false; }
问题在于'||'。如果我只保留'a',我的程序就能完美运行。通过这种方式它只给我这样的东西:'zzzzzz'。有什么想法吗?
答案 0 :(得分:6)
'a'
不是布尔值。 nm[0][x] == 'a'
是。因此,您需要:
if(nm[0][x] == 'a' || nm[0][x] =='e' || nm[0][x] =='i' || nm[0][x] =='o')
请注意,在c ++中,'a'
!= 0
,因此它等于true
,并且您的if语句将始终为true。唯一不正确的字符是\0
,空字符的计算结果为整数0
。
答案 1 :(得分:1)
//更好
bool CheckLetter(char c) {
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
return true;
default:
return false;
}
}
或者这个:
bool CheckLetter(char c) {
return (c == 'a') || (c == 'e') || (c == 'i') || (c == 'o');
}