C++ 计算字符串中元音的数量

C++ 计算字符串中元音的数量,c++,C++,我正在编写一个函数,返回给定字符串的元音数,代码如下: int isVowel(string sequence) { int numberOfVowels = 0; //Initialize number of vowels to zero string vowels = "aeiouAEIOU"; //Possible vowels, including capitals for (int i = 0; i <= sequence.len

我正在编写一个函数,返回给定字符串的元音数,代码如下:

int isVowel(string sequence)
{   
    int numberOfVowels = 0;         //Initialize number of vowels to zero
    string vowels = "aeiouAEIOU";   //Possible vowels, including capitals
    for (int i = 0; i <= sequence.length(); i++)
    {
        for (int j = 0; j <= vowels.length(); j++)
        {
            if (sequence[i] == vowels[j])
            {
                numberOfVowels += 1;
            }
        }
    }
    return numberOfVowels;
}
int是元音(字符串序列)
{   
int numberofvotels=0;//将元音数初始化为零
字符串元音=“aeiouAEIOU”;//可能的元音,包括大写字母

对于(int i=0;i
i
我建议您学习一些调试技巧。您可以使用源代码级调试器(如gdb)或内置于IDE中的调试器,也可以添加cout语句来打印变量值。名称
is元音()
强烈建议与
中的函数相似(
cctype
)。这些测试单个字符。也许您的函数应该重命名为
numowels()或一些这样的名字,强调它对字符串中元音的计数。也许当你找到匹配时,你应该打破内环;你不需要测试其他字符。也许你应该在<代码> e <代码>之前优化< <代码> a <代码>,因为在运行文本中E的数量比A的多,通常考虑使用而不是手动循环。例如:
const std::string元音=“aeiouAEIOU”bool isVowel(char c){return(vowels.find(c)!=std::string::npos);}int num-owels(const std::string sequence){return std::count_if(sequence.begin(),sequence.end(),isvowell);}
我建议您学习一些调试技巧。您可以使用gdb之类的源代码级调试器,也可以使用IDE中内置的调试器,或者可以添加cout语句来打印变量的值。名称
是元音()。这些测试单个字符。也许您的函数应该重命名为
numowels()或一些这样的名字,强调它对字符串中元音的计数。也许当你找到匹配时,你应该打破内环;你不需要测试其他字符。也许你应该在<代码> e <代码>之前优化< <代码> a <代码>,因为在运行文本中E的数量比A的多,通常考虑使用而不是手动循环。例如:
const std::string元音=“aeiouAEIOU”bool isVowel(char c){return(vowels.find(c)!=std::string::npos);}int num-owels(const std::string sequence){return std::count_if(sequence.begin(),sequence.end(),isvowell);}
我想是这样的,谢谢你的输入!有趣的是,问题是字符串末尾的空字节正在被比较,它们相等,所以被计数。这并不是错误的明显后果。是的,这确实很微妙,有时我忘了字符串在内存中以nu结尾ll字节,并且在计算string.length()时不包括该字节我想是这样的,谢谢你的输入!有趣的是,问题是字符串末尾的空字节正在被比较,它们相等,所以被计数。这并不是错误的明显后果。是的,这确实很微妙,我有时忘记了字符串在内存中以空字节结尾并且在计算string.length()时不包括这一点
i <= sequence.length()
i < sequence.length()