void ListaS::crearListaAleatoria(){
ifstream infile;
ifstream xfile;
infile.open("datosPrueba.txt");
xfile.open("datosPruebaNombres.txt");
int id;
char nombre[100];
int counter = 0;
//En caso de error
if (infile.fail()){
cout << "Error opening file" <<endl;
exit(1);
} if (xfile.fail()){
cout << "Error opening file" <<endl;
exit(1);
}
while(infile.eof() && xfile.eof()){
Persona* p = new Persona();
infile >> id;
xfile >> nombre;
p->setId(id);
p->setNombre(nombre);
agregar(p);
}
}
所以我试图建立一个包含两个文本文件的链表,一个有数字,另一个有名字,但是,每当我尝试打印这个列表的内容时,通过我在其他地方的另一个方法,它告诉我正在尝试访问空值。对象Persona*
是我存储id和名称的地方,而agregar()
是创建要添加到其他地方创建的列表的节点的地方。那些东西不会引起问题,主要是那两个值。我不认为有一些方法可以转换infile&gt;&gt; id到int?有吗?
答案 0 :(得分:0)
顺便说一下,while
循环的条件是错误的(应该是while(!infile.eof() && !xfile.eof())
)。但是在C ++中,你通常以不同的方式做这些事情:
while(infile >> id && xfile >> nombre){
Persona* p = new Persona();
p->setId(id);
p->setNombre(nombre);
agregar(p);
}
这样您就可以从文件中读取值并同时检查ifstream
状态......并避免最后一行出现问题。