簡體   English   中英

C ++從文件填充結構數組

[英]C++ filling array of structure from file

嗨,我需要讀取一個文件,並從文件獲取數據到結構數組。

結構體

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; }

當我嘗試使用main函數來打印結構的成員時,它不起作用

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;
}

函數中聲明fillStructure函數的返回類型,如下所示:

Activity* retFile;

這個代碼片段對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM