繁体   English   中英

如何比较2个不同字符串数组中的元素?

[英]How to compare elements in 2 different string arrays?

我正在尝试编写一个程序,该程序输入一个字符串,然后输出没有任何重复字符的最长子字符串的长度。

例如:输入:abcacbcc 输出:3。

但是,当我尝试将子字符串中的元素与输入字符串中的元素进行比较时,编译器不允许我与错误消息进行比较:

“严重性代码描述项目文件行抑制状态错误 C2677 二进制 '==':未找到采用 'std::string' 类型的全局运算符(或没有可接受的转换)行:22”

我该如何解决这个问题?

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str;
    getline(cin, str);
    string substr[100];
    int static max = 0;
    int static count = 0;
    int static index = 0;
    for (int i = 0; (i < str.size()); i++) {
        if (str[i] != str[i + 1]) {
            substr[index] = str[i];
            index++;
            count++;
            if (count >= max) {
                max = count;
            }
            for (int j = 0; j < index; j++) {
                if (str[i+1] == substr[j]) { //**problem here**
                    count = 0;
                    substr[0] = "\0";
                    index = 0;

                    break;
                }
            }
        }
        else if (str[i] == str[i + 1]) {
            count = 0;
            substr[0] = "\0";
            index = 0;
        }
    }
    cout << max;
    return 0;
}

您正在尝试将str[i+1] (即char )与substr[j] (即std::string )进行比较。 这会导致错误,因为没有运算符==charstd::string进行比较。

从问题陈述和您编写程序的方式来看,我猜您正在使用substr来存储当前的子字符串。 为了您的目的,我认为您想要的是一个char数组,而不是将其声明为std::string数组。

因此,您可以像 char substr char substr[100]那样删除 substr,然后更改:

substr[0] = "\0";

substr[0] = '\0';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM