Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用成员函数从文件加载数据_C++ - Fatal编程技术网

C++ 使用成员函数从文件加载数据

C++ 使用成员函数从文件加载数据,c++,C++,person类应具有以下功能: •建造商 •析构函数-可选 •获取-从输入流中读取名字、姓氏和年龄 •Put-将姓氏、名字和年龄写入输出流 我试图实现get(),以便它可以从文件中读取文本,但我有点卡住了 #include <iostream> #include <string> #include "person.h"; using namespace std; person::person() { fName = "Default"; lName =

person类应具有以下功能: •建造商 •析构函数-可选 •获取-从输入流中读取名字、姓氏和年龄 •Put-将姓氏、名字和年龄写入输出流

我试图实现get(),以便它可以从文件中读取文本,但我有点卡住了

#include <iostream>
#include <string>
#include "person.h";
using namespace std;

person::person()
{  
   fName = "Default";
   lName = "Default";
   age   = 0;
}

bool person::get(istream &in)
{ 
  in >> fName >> lName >> age;
  return(in.good());
}

// Output
void person::put(ostream &out)
{ 
  out << lName << fName << age;
}
这是我的档案资料

Ann Christensen  70
Carlos Morales   68
David Bowman     45
Frank Bowman     37
John Bowman      30
Kathleen Gueller 34
Mark Bowman      42
Mark Bowman      13
Richard Bowman   47
Susan Cox        36

谢谢。

如果我正确阅读了您的代码,这是因为您正在调用
info[I].get(cin)
,而您想执行
info[I].get(infle)
。现在,它试图从控制台读取输入,因此是“挂起”的

另外,我认为(I=0;I<20;I++)的
循环在这里是不好的。这里更好的方法是使用
向量
来保持正确阅读
的人
s

std::vector<person> info;
//...

// loop
while (!infile.eof())
{  
    if(infile.good())
    {
        person new_person;
        if (new_person.get(infile))
            info.push_back(new_person);
    }
}

列表中的10个人,尝试在
循环中读取20个,该循环不测试输入流的状态和/或每次读取后不测试流状态的
get
函数返回的结果。
infile >> info[i].lName >> info[i].fName >> info[i].age;
Ann Christensen  70
Carlos Morales   68
David Bowman     45
Frank Bowman     37
John Bowman      30
Kathleen Gueller 34
Mark Bowman      42
Mark Bowman      13
Richard Bowman   47
Susan Cox        36
std::vector<person> info;
//...

// loop
while (!infile.eof())
{  
    if(infile.good())
    {
        person new_person;
        if (new_person.get(infile))
            info.push_back(new_person);
    }
}
person new_person;
while (new_person.get(infile))  //you can keep overwriting the object
    info.push_back(new_person); //because vector makes a copy of it