我正在编写一个基本程序来计算字符串的元音。我想尝试使用bool函数测试每个字符是否为元音,但是每当我输入带有元音的字符串时,它都不会增加vowels int。

#include <iostream>

using namespace std;

bool isVowel(char){
 char chara;
 return (tolower(chara) == 'a' || tolower(chara) == 'e' ||
   tolower(chara) == 'i' || tolower(chara) == 'o' ||
   tolower(chara) == 'u' || tolower(chara) == 'y');
}

int main()
{
   string input;
   int vowels = 0;

   cin >> input;

   for(unsigned int i = 0; i<input.length(); i++){
      if( isVowel(input.at(i)) )
         vowels++;
   }
   cout << "Including a, e, i, o, u, and y, that word contains " << vowels << " vowels.\n";
}

例如,当我在控制台中输入“hello”作为输入时,vowels整数的值为0。我的函数出了什么问题?

最佳答案

您弄错了函数参数的语法,并且无意间写了一些合法的东西,但是没有按照您的预期去做。这样写

bool isVowel(char chara) {
    return chara == 'A' || chara == 'E' ||
        chara == 'I' || chara == 'O' || chara == 'U' || chara == 'Y' ||
        chara == 'a' || chara == 'e' || chara == 'i' || chara == 'o' ||
        chara == 'u' || chara == 'y';
}

关于c++ - 为什么我的函数无法确定字符是否为元音?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53803414/

10-12 05:19