2012-12-11 53 views
0

我想創建一個包含雙精度型和字符串矢量的結構體。我試過這個矢量通過引用結構?

int main() 
{ 
    struct List 
    { 
     double price; 
     vector<string> items; 
    }; 

    List list; 

    ifstream infile ("Aap.txt"); 

    double p; 
    infile>>p; 
    list.price=p; 
    cout<<list.price<<endl; 

    int i=0; 
    string name; 
    getline(infile,name); 

    while(infile) 
    { 
     list.items.push_back(name); 
     cout<<list.items[i]<<endl; 
     i++; 
     getline(infile,name); 
    } 
    infile.close(); 

    if (!infile) 
    { 
     cout<<"File closed."<<endl; 
    } 

return 0; 

這不是填充我的向量,因爲它不是通過引用結構,我想?

但是,當我在struct定義矢量爲:

vector<string>& items; 

我得到一個錯誤說:

錯誤:結構'名單」未初始化引用成員。

我該如何解決這個問題?

謝謝你的幫忙!

+2

「不填充我的矢量」是什麼意思?就「vector」而言,你的代碼看起來很好。不需要任何參考。 – AnT

+0

這意味着代碼'couts'是文件的兩倍,但不是項目的列表... – Lola

+0

我只是用一個快速的人工輸入文件嘗試了你的代碼,它工作正常。你的輸入文件是什麼樣的?它是否在您的實驗中讀取和打印價格值? – AnT

回答

0

你的代碼工作得很好。

第一次閱讀有點小問題:如果輸入文件中的換行符在價格值後面,則該換行符將保持未讀。在這種情況下,首先撥打getline將讀取一個空字符串,這意味着您的items陣列中的名字將最終爲空。