使用两个文本文件构建链接列表

时间:2013-09-29 17:55:58

标签: c++ visual-studio-2010

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?有吗?

1 个答案:

答案 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状态......并避免最后一行出现问题。