C 从文件中填充结构数组

C++ filling array of structure from file

本文关键字:结构 数组 填充 文件      更新时间:2023-10-16

嗨,我需要读取文件并从文件中获取数据到结构数组。

结构

struct Activity {
    string ID;
    string Name;
    string quantity; };

我有此功能用于从文件中读取

int* fillStructure(ifstream &fileActivity){

    int i=0;
    int numberOfElements = numberOfLines(fileActivity);
    Activity* myActivity = new Activity[numberOfElements];
    while (i < numberOfElements)
    {
          getline(fileActivity, myAktivity[i].ID, ',');
          getline(fileActivity, myActivity[i].Name, ',');
          getline(fileActivity, myActivity[i].quantity, 'n');      
          i++;
    }
   fileActivity.close(); 
   return myActivity; }

,当我尝试主要功能打印结构成员时,它不起作用

int main(){

    if (!(fileActivity.is_open())){
        cout << "Error when reading file" << endl;
        return 0;
    }  
    fillStructure(fileActivity);
    cout << myActivity[1].ID << endl; return 0;  }

我是初学者,你们能帮我我做错了什么吗?

您在void fillStructure(ifstream &fileActivity)中声明了myActivity,但尝试从int main()访问。

您必须在主函数中声明返回值。

struct Activity {
string ID;
string Name;
string quantitiy;
};
Activity* fillStructure(ifstream &fileActivity) {
int i = 0;
int numberOfElements = numberOfLines(fileActivity);
Activity* myActivity = new Activity[numberOfElements];
while (i < numberOfElements)
{
    getline(fileActivity, myActivity[i].ID, ',');
    getline(fileActivity, myActivity[i].Name, ',');
    getline(fileActivity, myActivity[i].quantitiy, 'n');
    i++;
}
fileActivity.close();
return myActivity;
}

int main(){
ifstream fileActivity ("test.txt", ifstream::in);
Activity* retFile;
retFile = fillStructure(fileActivity);
cout << retFile[1].ID << endl;
return 0;
}

main 函数中声明 fillstructure 函数的返回类型:

Activity* retFile;

此代码对我有用