0
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);


}

}

所以我试图用两个文本文件构建一个链表,一个有数字,另一个有名字,但是,每当我尝试打印这个列表的内容时,通过我在其他地方的另一种方法,它告诉我我' m 试图访问空值。对象Persona*是我存储 id 和名称的地方,而agregar()创建节点以添加到在其他地方创建的列表中。这些东西并没有引起问题,主要是这两个值。我不认为有某种方法可以将 infile >> id 转换为 int?在那儿?

4

1 回答 1

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状态......并且您可以避免最后几行出现问题。

于 2013-09-29T22:35:35.890 回答