C++ 为什么编译器会显示错误";与';操作员[]和#x27;(操作数类型为';carti';和';int';);

C++ 为什么编译器会显示错误";与';操作员[]和#x27;(操作数类型为';carti';和';int';);,c++,C++,每次尝试运行代码时,编译器都会多次显示错误:“运算符[]”(操作数类型为“carti”和“int”)不匹配。我试图从一个文件中读取10个结构,并使用“for”循环将它们分配给“c[I]”变量,用三种不同的方式对它们进行排序,然后在屏幕上打印它们。(这是学校的作业) 这是我目前的代码: #include <iostream> #include <fstream> using namespace std; struct carti{ char nume[41];

每次尝试运行代码时,编译器都会多次显示错误:“运算符[]”(操作数类型为“carti”和“int”)不匹配。我试图从一个文件中读取10个结构,并使用“for”循环将它们分配给“c[I]”变量,用三种不同的方式对它们进行排序,然后在屏幕上打印它们。(这是学校的作业) 这是我目前的代码:

#include <iostream>
#include <fstream>
using namespace std;

struct carti{
    char nume[41];
    float pret;
    float rating;
}c;

int main(){
    int i,j;
    ifstream fin;
    fin.open("carti.txt");
    for(i=0;i<10;i++){
        getline(c[i].nume,41)
        fin>>c[i].pret;
        fin>>c[i].rating;
        cout<< c[i]<<"\n";
    }
    for(i=0;i<10;i++){
        if(c[i].nume[0]>c[i+1].nume[0]){
            c[i]=c[i+1];
        }
    }
    for(i=0;i<10;i++){
        cout<<c[i]<<"\n";
    }
    for(i=0;i<10;i++){
        if(c[i].pret>c[i+1].pret){
            c[i]=c[i+1];
        }
    }
    for(i=0;i<10;i++){
        cout<<c[i]<<"\n";
    }
    for(i=0;i<10;i++){
        if(c[i].rating>c[i+1].rating){
            c[i]=c[i+1];
        }
    }
    for(i=0;i<10;i++){
        cout<<c[i]<<"\n";
    }
}
#包括
#包括
使用名称空间std;
结构卡蒂{
查努姆[41];
浮动pret;
浮动评级;
}c;
int main(){
int i,j;
流鳍;
财务公开(“carti.txt”);
对于(i=0;i>c[i].pret;
fin>>c[i]。评级;

cout您可能需要执行以下操作:

    struct carti{
        char nume[41];
        float pret;
        float rating;
    }c[10];
话虽如此,您的代码还有其他问题


比如说,你想做
cout变量c不是数组。它是一个标量变量。因此你可能不应用下标运算符。你认为
c
是什么?你认为
c[i]
是什么?
c
是“carti”类型的(应该大写)。你期望
c[i]
该做什么?避免使用原始数组。改用
std::vector