"错误:下标值不是数组,指针或向量"并且我使用字符串

时间:2017-06-21 03:21:38

标签: c++ arrays string

我正在为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;
}

1 个答案:

答案 0 :(得分:4)

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

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

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