[英]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
)进行比较。 这会导致错误,因为没有运算符==
将char
与std::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.