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


}

}

だから私は2つのテキストファイルでリンクされたリストを構築しようとしています.1つは数字で、もう1つは名前です. m null 値にアクセスしようとしています。オブジェクトPersona*はIDと名前を保存する場所であり、他のagregar()場所で作成されたリストに追加するノードを作成するものです。これらのことは問題を引き起こしていません。主にこれら2つの値です。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 に答える