从文件和矢量中获取数据

get data from file and vector

本文关键字:获取 数据 文件      更新时间:2023-10-16

我想检索文本文件中的所有数据,所以我将读取向量 1st,然后显示所有数据。文本文件中的第一个数据我可以正确获取它,但是文本文件中的第二个数据,用户名无法检索并且它消失了。这是文本文件数据...

1|管理员|管理员

|管理员|男|123|123|123|

1|杰夫|杰夫|

杰夫|男|123|123|123|

在我显示所有数据之后...它变成这样

1 管理员 管理员 管理员 男 123

123 123

1 杰夫 杰夫 男 123 123 123

谁能帮我解决??谢谢

void Admin::displayMemberInfo(vector <Member> &memberProfile)
{
if(loginSucceed == true)
{
    int memberID, age;
    string username, password, name, gender, contact, ic;
    memberProfile.erase(memberProfile.begin(),memberProfile.end());
    ifstream inMember("Member.txt");
        while(!(inMember.eof()))
        {
            string name,gender,contact, ic, username, password;
            int age,memberID;
            string readID,readAge;
            getline(inMember,readID,'|');
            istringstream(readID)>>memberID;
            getline(inMember,username,'|');
            getline(inMember,password,'|');
            getline(inMember,name,'|');
            getline(inMember,gender,'|');
            getline(inMember,readAge,'|');
            istringstream(readAge)>>age;
            getline(inMember,contact,'|');
            getline(inMember,ic,'|');
            inMember.ignore(numeric_limits<streamsize>::max(), '|');
            //if(username != "")
            //{
            //  Member member(memberID, username, password, name, gender,age, contact, ic);
            //  memberProfile.push_back(member);
            //}
            cout<<memberID<<username<<password<<name<<gender<<age<<contact<<ic<<endl;
        }
        inMember.close();
        system("pause");
}
}

您需要更改此行

inMember.ignore(numeric_limits<streamsize>::max(), '|');

inMember.ignore(numeric_limits<streamsize>::max(), 'n');

哦,是的,我忘了,你重新声明变量。

尝试整个功能并告诉我它是否更好用:

void Admin::displayMemberInfo(/* vector <Member> &memberProfile */) {
int memberID, age;
string username, password, name, gender, contact, ic;
//memberProfile.erase(memberProfile.begin(),memberProfile.end());
ifstream inMember("Members.txt");
if(inMember.fail()) return;
while(!(inMember.eof())) {
    string readID,readAge;
    getline(inMember,readID,'|');
    istringstream(readID)>>memberID;
    getline(inMember,username,'|');
    getline(inMember,password,'|');
    getline(inMember,name,'|');
    getline(inMember,gender,'|');
    getline(inMember,readAge,'|');
    istringstream(readAge)>>age;
    getline(inMember,contact,'|');
    getline(inMember,ic,'|');
    inMember.ignore(numeric_limits<streamsize>::max(), 'n');
    //if(username != "")
    //{
    //  Member member(memberID, username, password, name, gender,age, contact, ic);
    //  memberProfile.push_back(member);
    //}
    cout<<memberID<<username<<password<<name<<gender<<age<<contact<<ic<<endl;
}
inMember.close();
system("pause");
}

您还在函数和 while 循环中重新声明变量。我为我的测试注释掉了矢量的东西。

我的输入文件是

1|admin|admin|admin|Male|123|123|123|
2|jeff|jeff|jeff|Male|123|123|123|

以新行终止。 输出为

1adminadminadminMale123123123
2jeffjeffjeffMale123123123