-1

テキスト ファイル内のすべてのデータを取得したいので、ベクトル 1 に読み取り、すべてのデータを表示します。テキストファイルの1番目のデータはちゃんと取得できますが、テキストファイルの2番目のデータ、ユーザー名が取得できずに消えてしまいました。これがテキストファイルのデータです...

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");
}
}
4

1 に答える 1

1

この行を変更する必要があります

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
于 2013-09-19T14:09:23.617 に答える