我有一个基类动物和派生类叫做猫和狗。 display()和readfile()都是这两个类中的虚函数。
目前,只有" Kay"一旦调用readfile(),就会在屏幕上显示。如何以某种方式读取文件中的所有行,以便我可以在向量中找到一个项目,然后再对其进行编辑,例如,如果我想要更改" Sugar"到" Sopa"通过运行一个名为changeName()的函数?
Cat.csv
Kay
Sugar
Jo
int main()
{
AnimalCollection coll;
std::ifstream file("Cat.csv");
Cat *cat = new Cat("CAT");
Dog *dog = new Dog("DOG");
coll.push_back(cat);
coll.push_back(dog);
for (Animal *c : coll)
{
c->display();
}
for (Animal *c : coll)
{
c->readfile(file);
}
return 0;
}
答案 0 :(得分:0)
这个问题缺少重要部分。
就像@KennyOstrom指出的那样,文件似乎只读了一次。
file.seekg(0, file.beg);
可以提供帮助。
这解决了你的问题吗?
for (Animal *c : coll)
{
c->readfile(file);
file.seekg(0, file.beg);
}
在这种情况下,更好的解决方案是读取文件一次并将内容提供给不同的类。