字符串中的 C++ 元音,禁止比较

标签 c++

我正在尝试计算字符串中元音的总数。我正在使用 strlen 来获取字符串的总长度,但是当我尝试按每个字母对字符串进行计数时,它说 C++ 禁止比较。所以我假设我的 if 语句有问题。

#include <iostream>
#include <cstring>
using namespace std;


int main() {

    char sentence[] = "";
    int count;
    int total;
    int length;
    int lengthcount;
    int output;
    output = 0;
    length = 0;
    count = 0;
    total = 0;
    cin >> total;

    while (total != count){
        cin >> sentence;
        length = strlen(sentence);
        while (length != lengthcount)
            if (sentence[length] == "a" ||sentence[length] == "e"||sentence[length] == "i"||sentence[length] == "o"||sentence[length] == "u"||sentence[length] == "y"){
             ++ output;
             ++ lengthcount;
                 else{
                ++lengthcount;
             }
            }
        ++count;
    }

return 0;
}

最佳答案

sentence[length] 是一个字符。它应该与 'a' 而不是 "a" 进行比较。

"a" 是一个字符数组,不支持与内置的operator== 直接比较。

sentence[index] == 'a'; // where index is probably lengthcount in your example

应该可以解决问题。如果使用 std::string 是一个选项,那么您应该优先使用 char 数组。

此外,您的 char sentence[] = ""; 将需要比 '\0' 字符更多的空间。一些替代方案包括使用 std::stringstd::getlinechar[nnn]cin.get(。 ..) 以确保您不会超出分配的缓冲区。

关于字符串中的 C++ 元音,禁止比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25741779/

相关文章:

c++ - 从点创建集合时出错

c++ - 方法在类中的位置

C++ 打印指针不确认 showbase

c++ - 这两个 C++ 函数的区别

c++ - 是否可以使用友元函数将类类型转换为基本类型?

c++结构运算符重载不起作用

c++ - 如何缩小对象的大小

c++ - 如何将const char *作为LPCSTR参数的参数传递?

c++ - RegSetKeyValueA 函数是否有任何向后兼容的替代方法?

c# - 将复杂结构编码到 C#