C++ 如何从文件读入类对象的向量?
我需要能够保存类对象的向量,这是我能够做到的;然而,我不知道如何读回数据。我已经尝试了所有我知道如何去做的事情和我在这里看到的一些事情,但没有一件对我有帮助 我创建了一个测试类和main,以找出一种读取数据的方法。最近的一次尝试中,我能够将第一个对象放入程序中,但其余的没有。这是一个测试,看看我是否能在我的家庭作业中实现它之前让它工作,因为我的家庭作业有多个数据成员 代码:C++ 如何从文件读入类对象的向量?,c++,file-io,vector,C++,File Io,Vector,我需要能够保存类对象的向量,这是我能够做到的;然而,我不知道如何读回数据。我已经尝试了所有我知道如何去做的事情和我在这里看到的一些事情,但没有一件对我有帮助 我创建了一个测试类和main,以找出一种读取数据的方法。最近的一次尝试中,我能够将第一个对象放入程序中,但其余的没有。这是一个测试,看看我是否能在我的家庭作业中实现它之前让它工作,因为我的家庭作业有多个数据成员 代码: #包括 #包括 #包括 #包括 #包括 使用名称空间std; A类 { 字符串名称;//名称是多个单词 int-id; 公
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
A类
{
字符串名称;//名称是多个单词
int-id;
公众:
typeA(字符串名,int-id):名称(name),id(id){}
typeA(){}
朋友(团队和操作员温度)
{
v、 推回(温度);
}
向量:迭代器iter;
对于(iter=v.begin();iter!=v.end();iter++)
{
cout问题出在您的操作符>
中。当您读取id
时,以下换行符不会被使用,因此当您读取下一个对象时,您会读取一个空行作为其名称。解决此问题的一种方法是在读取id
后调用:
friend istream& operator >>(istream& in, typeA& a)
{
getline(in, a.name); // since the name is first and last i have to use getline
in >> a.id;
in.ignore();
return in;
}
非常适合于此。您是如何编写的?当您读取第二个对象时,getline()
只读取a.id
而不读取其后的换行符时,会留下一个空行。这很有效。当我在作业中实现它时,一些对象有多个字符串成员,我需要使用getline,我是否必须在.ingore()中使用在每一个之后或仅仅在结尾。@AndrewB.如果上一次读取没有使用换行符,例如标准类型的operator>
,则必须在getline()
之前使用ignore()
。谢谢。我现在理解了。如果cin之后有一个“getline()”,则必须使用“ingore()”。
friend istream& operator >>(istream& in, typeA& a)
{
getline(in, a.name); // since the name is first and last i have to use getline
in >> a.id;
in.ignore();
return in;
}