2012-12-11 47 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阵列中的名字将最终为空。