无法获取存储在向量结构中的信息

Posted

技术标签:

【中文标题】无法获取存储在向量结构中的信息【英文标题】:Trouble getting the info stored in the structures in the vector 【发布时间】:2012-12-03 02:08:22 【问题描述】:

我的功能有问题,它应该打印出存储的书籍列表

void PrintBooklist(vector<BookList>&book)

    for(int i=0; i<book.size(); i++)
       
        if (book[i].memNumBor = -1)
            cout<<book[i].title<<endl;
    

但它会打印出单词“Title;”几次,但将其留空。我检查最后的大小以确保添加的任何内容都被推回,但我无法读出它。提前致谢!

int main()
   
    vector<BookList>book;
    vector<MemInfo>member;
    string memberfile;
    string bookfile;
    ofstream fout;
    ifstream fin;

    cout << "\n\t\t\tWelcome to Library Management Services!"<<endl<<endl;

    Read_Member(member, fin, memberfile);
    Read_Book(book, fin, bookfile);

    SignIn(member, book, fin, fout, memberfile, bookfile); 
    return 0;


void Read_Member(vector<MemInfo> &member, ifstream &Fin, string &memberfile) 

    MemInfo temp;
    cout<<"Please enter the name of the file that contains the member information: ";
    getline(cin,memberfile);

    Fin.open(memberfile.c_str());

    if(Fin.fail())
    
        cout<<endl<<"File containing the member information does not exist.\n"<<endl;
        exit (0);
    

    ReadInfoMem(Fin);
    while (!Fin.eof())
       
        member.push_back(temp);
        ReadInfoMem(Fin);
    
    Fin.close();

    for (int i=0; i<member.size(); i++)
    
        cout<<endl<<member[i].lName<<endl;
    

【问题讨论】:

【参考方案1】:

你行分配 memNumBor

if (book[i].memNumBor = -1)

你想要的是平等检查

if (book[i].memNumBor == -1) // note the double '=='

更新:

编辑添加更多代码后,我注意到以下内容:

MemInfo temp;

// ...snip...

ReadInfoMem(Fin);            // presumably this reads the member info from 'Fin'?
while (!Fin.eof())
   
    member.push_back(temp);  // and you add an *empty* 'temp' object to 'member'
    ReadInfoMem(Fin);

我预计正在发生的事情是您正在从 ReadInfoMem 中的 Fin 读取到本地 MemInfo 变量中,但是您没有将填充的 MemInfo 返回到您的封闭函数中,该函数将其添加到您的member 向量。

我建议按值返回,或按引用传递

按值返回

MemInfo ReadInfoMem(ifstream& fs)

    MemInfo temp;
    // populate temp
    return temp;


// in your calling code:
temp = ReadInfoMem(Fin);

参考传递

void ReadInfoMem(ifstream& fs, MemInfo& temp)

    // populate temp


// in your calling code:
ReadInfoMem(Fin, temp);

【讨论】:

非常感谢!我没有抓住那个。谢谢 :) 我认为我的问题在于 Read_Member 函数,读取成员函数阻止它工作,因为那里什么都没有。我确定它被拾起,但在推回后它不在向量中。这是有问题的部分。我刚刚添加了其余的代码。再次感谢您

以上是关于无法获取存储在向量结构中的信息的主要内容,如果未能解决你的问题,请参考以下文章

第二节 获取词向量的工具——Word2Vec

数据结构

在R中的排序向量中获取索引的最有效方法?

无法从 Flutter Firebase 中的 DocumentReference 获取 DownloadURL 或 StorageReference

SystemVerilog:从结构向量中,获取一个向量,该向量收集每个结构的一个字段

无法从 CloudKit 通知信息和用户信息结构中获取 CKRecord.ID