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;ii我建议您学习一些调试技巧。您可以使用源代码级调试器(如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()