2016-12-18 46 views
-3

我希望你們可以幫忙,因爲標題說我需要從一個文件中讀取數據到結構的向量,但我需要使用readfile函數來讀取不同的結構在不同的時間。它是困惑我的for循環我需要從文件讀取數據到一個向量結構

for(temp; getline(infile, temp.whatever) && getline(infile, temp.whatever2); i++) 
    structname.pushback(temp); 

這將函數綁定到單獨的結構。它有點反生產寫另一個函數來讀取不同的結構。顯然這是有效的,但有沒有辦法讓這個更加可重用。在此先感謝

+1

什麼是'temp'?它似乎沒有一個類型...'我'宣佈在哪裏? –

+0

對不起temp是結構的臨時名稱,我在循環之前聲明int i = 0; –

+0

請提供一個[MCVE] –

回答

0

是的,你可以做一些事情,使代碼可用於不同的結構類型。

但是,所有結構類型必須都具有在函數內使用的字段。

它可能是這個樣子:

template<typename T> 
void readData(vector<T>& v, istream& infile) 
{ 
    T temp; 
    while(getline(infile, temp.whatever) && getline(infile, temp.whatever2)) 
    { 
     v.push_back(temp); 
    } 
} 

int main() { 
    // Add code for infileA and infileB 

    vector<myStructA> va; 
    readData(va, infileA); // or readData<myStructA>(va, infileA); if you prefer 

    vector<myStructB> vb; 
    readData(vb, infileB); // or readData<myStructB>(vb, infileB); if you prefer 

    .... 
    .... 

    return 0; 
} 

所以這裏都myStructAmyStructB必須有成員whateverwhatever2。這可以通過使用myStructAmyStructB的通用基類來實現。

相關問題