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

标签 c++ arrays string

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

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

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

#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 引用函数内部的全局变量。这将通知编译器访问全局变量,但我真的建议只更改变量名称。

关于c++ - "error: subscripted value is not an array, pointer, or vector"我正在使用一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44666314/

相关文章:

c++ - 如何将批处理文件的输出读入 C++ 中的字符串

c# - 如何将字节数组转换为字符串?

使用 Mersenne Twister 生成 C++ 随机数

c++ - QListWidget 通过 setItemWidget 拖放自定义小部件集

javascript - 如何使用过滤器返回一个新数组减去已选择的一项?

javascript - 将字符串转换为变量,可能吗?

java - if 语句 undefined variable

python - 从给定字符串中提取最大数值

c++ - 如何使用 Xcode 在 C++ 库中使用 __IPHONE_4_0 定义?

javascript - 如何将对象数组中的属性值设置为反向?