"error: subscripted value is not an array, pointer, or vector",我正在使用字符串

"error: subscripted value is not an array, pointer, or vector"and I'm using a string

本文关键字:vector 字符串 or pointer is value subscripted not an error array      更新时间:2023-10-16

我正在为 zoj 1733 编写一个程序,问题出在第 8 行:

else if(x[i] == y[j])return f(i-1,j-1)+1;

为什么我不能使用"x[i]"而x是字符串?而且我不明白提示"下标值不是数组、指针或向量"。以下是我的代码:

#include <iostream>
using namespace std;
string x,y;
int f(int i,int j){
int x,y;
if(i==0 || j==0)return 0;                       
else if(x[i] == y[j])return f(i-1,j-1)+1;
else {
x=f(i-1,j);
y=f(i,j-1);
if(x>y)return x;
else return y;
}
}
int main(int argc, char *argv[]) {
int i,j;
while(cin>>x>>y){
i=x.size();j=y.size();
cout<<f(i,j)<<endl;
}
return 0;
}

xy声明为字符串全局变量,也声明为整数局部变量。当您在函数内访问它们时,它会考虑整数版本,因为它们的范围更近。更改其中任何一个的名称,它应该可以正常工作。

编辑:通过"它们中的任何一个",我的意思是更改全局变量或局部变量的名称,而不是x或y:)

您还可以使用::x::y引用函数内的全局变量。这将通知编译器访问全局变量,但我真的建议只更改变量名称。