1

私は次の人のファイルを持っています:

Name 0744112233 ASD

および次のコード

const string InFilePersonRepository::PFILE = "persons";

void InFilePersonRepository::load() {
        string delim = " ";
        string name, phone, address;
        ifstream fin(PFILE.c_str());
        while (fin.good()){
            fin>>name>>delim>>phone>>delim>>address;
            Person p(name,phone,address);
            persons.push_back(p);
        }
}

読み取りが完了すると、name、phone、addressの値は次のようになります。name= Name、phone = ASD、address = ""、

ファイルに複数の行がある場合、同じ問題で、ファイルの2番目のフィールドはスキップされます。なぜそれが起こっているのですか?

ありがとう

4

2 に答える 2

3

>>空白をスキップするため、。は必要ありませんdelimfin >> name >> phone >> addressする必要があります。

于 2012-05-13T08:49:57.707 に答える
1

そのようなことを試してください

 void InFilePersonRepository::load() {
            string name, phone, address;
            ifstream fin(PFILE.c_str());
            while (fin.good()){
                fin>>name>>phone>>address;
                Person p(name,phone,address);
                persons.push_back(p);
            }
    }
于 2012-05-13T08:52:16.370 に答える