I'm writing a C++ console-app in code::blocks, I'am getting this message "Process returned -1073741819 (0xC0000005)" and no error info
I found out the error comes from the next code Before i fix this, it doesn't even show anything only the memory message...
It should cut a string into pieces and set each element to its correspondant space in "arregloPeliculas" array.
void cargarPeliculas(){
//Declaracion de variables
string cadena = "", genero, titulo, strCast;
int i, numPeli, anio, duracion, cantidad;
bool adActorRespuesta;
Actor busquedaDeActor;
registrosPeliculas = 0;
ifstream inFile;
inFile.open("peliculas.txt");
ifstream inFileActores;
inFileActores.open("actores.txt");
while(getline(inFile, cadena)){
//El proceso para obtener los datos de las peliculas es muy similar y la explicaciones es igual en todos los casos
//Primero obtener una linea de inFile(Actores) y la guardamos en cadena
//Numero de peli
stringstream caster(cadena.substr(0, cadena.find(' ')));
caster >> numPeli;//Se guarda en un int real
arregloPeliculas[i].setNumPeli(numPeli); //Se Pasa numPeli a setNumPeli de arregloPeliculas
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);//Se modifica la cadena original, ahora cadena se corta desde donde encuentr ale primer espacio hasta el final menos 1
//Anio
stringstream casterAnio(cadena.substr(0, cadena.find(' ')));
casterAnio >> anio;
arregloPeliculas[i].setAnio(anio);
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Duracion
stringstream casterDuracion(cadena.substr(0, cadena.find(' ')));
casterDuracion >> duracion;
arregloPeliculas[i].setDuracion(duracion);
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
/*//Genero
arregloPeliculas[i].setGenero(cadena.substr(0, cadena.find(' ')));
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
*/
//Cantidad de actores
stringstream casterCantidad(cadena.substr(0, cadena.find(' ')));
casterCantidad >> cantidad;
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Obtener id's en arreglo de int
int id[cantidad];//Se crea un arreglo de int con el tamaño [cantidad]
for(int x = 0; x < cantidad; x++){//Iteramos para seguir recortando la cadena y guardar cada uno de los id en el archivo en un nuevo espacio del arreglo id
stringstream casterId(cadena.substr(0, cadena.find(' ')));
casterId >> id[x];
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
}
//Agregar titulo
titulo = cadena;
arregloPeliculas[i].setTitulo(titulo);
//Enlazar actores
//1.- Buscar actor por id de id[indice] en arregloActores
for(int buscador = 0; buscador < cantidad; buscador++){
for(int buscadorActor = 0; buscadorActor < sizeof(arregloActores)/sizeof(arregloActores[0]); buscadorActor++){
if(arregloActores[buscadorActor].getId() == id[buscador]){
//Actor encontrado por Id
//2.- Al encontrarlo, crear objeto Actor, setear ID con id de arregloActores y Nombre con nombre de arregloActores
busquedaDeActor.setId(id[buscador]);
busquedaDeActor.setNombre(arregloActores[buscadorActor].getNombre());
//3.- Pasar el objeto Actor creado anteriormente a arregloPeliculas[i].setActor
adActorRespuesta = arregloPeliculas[i].setActor(busquedaDeActor);
if(adActorRespuesta == true){
cout << "Actor agregado con exito!"<<endl;
}
else{
cout <<"No se pudo agregar al actor..."<<endl;
}
}
}
}
cadena = "";
i++;
registrosPeliculas++;
}
inFile.close();
inFileActores.close();
}
I don't know what to change from code, I've been searching for solutions but it seems that every same error is different
EDIT: Final code looks like this, it was due to scope pollution
void cargarPeliculas(){
//Declaracion de variables
string cadena = "", genero, titulo, strCast;
int iterador = 0, numPeli, anio, duracion, cantidad;
bool adActorRespuesta;
Actor busquedaDeActor;
registrosPeliculas = 0;
ifstream inFile;
inFile.open("peliculas.txt");
ifstream inFileActores;
inFileActores.open("actores.txt");
while(getline(inFile, cadena)){
//El proceso para obtener los datos de las peliculas es muy similar y la explicaciones es igual en todos los casos
//Primero obtener una linea de inFile(Actores) y la guardamos en cadena
//Numero de peli
stringstream caster(cadena.substr(0, cadena.find(' ')));
caster >> numPeli;//Se guarda en un int real
arregloPeliculas[iterador].setNumPeli(numPeli); //Se Pasa numPeli a setNumPeli de arregloPeliculas
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);//Se modifica la cadena original, ahora cadena se corta desde donde encuentr ale primer espacio hasta el final menos 1
//Anio
stringstream casterAnio(cadena.substr(0, cadena.find(' ')));
casterAnio >> anio;
arregloPeliculas[iterador].setAnio(anio);
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Duracion
stringstream casterDuracion(cadena.substr(0, cadena.find(' ')));
casterDuracion >> duracion;
arregloPeliculas[iterador].setDuracion(duracion);
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Genero
arregloPeliculas[iterador].setGenero(cadena.substr(0, cadena.find(' ')));
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Cantidad de actores
stringstream casterCantidad(cadena.substr(0, cadena.find(' ')));
casterCantidad >> cantidad;
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
//Obtener id's en arreglo de int
int id[cantidad];//Se crea un arreglo de int con el tamaño [cantidad]
for(int x = 0; x < cantidad; x++){//Iteramos para seguir recortando la cadena y guardar cada uno de los id en el archivo en un nuevo espacio del arreglo id
stringstream casterId(cadena.substr(0, cadena.find(' ')));
casterId >> id[x];
cadena = cadena.substr(cadena.find(' ') + 1, cadena.length() - 1);
}
//Agregar titulo
titulo = cadena;
arregloPeliculas[iterador].setTitulo(titulo);
//Enlazar actores
//1.- Buscar actor por id de id[indice] en arregloActores
for(int buscador = 0; buscador < cantidad; buscador++){
for(int buscadorActor = 0; buscadorActor < sizeof(arregloActores)/sizeof(arregloActores[0]); buscadorActor++){
if(arregloActores[buscadorActor].getId() == id[buscador]){
//Actor encontrado por Id
//2.- Al encontrarlo, crear objeto Actor, setear ID con id de arregloActores y Nombre con nombre de arregloActores
busquedaDeActor.setId(id[buscador]);
busquedaDeActor.setNombre(arregloActores[buscadorActor].getNombre());
//3.- Pasar el objeto Actor creado anteriormente a arregloPeliculas[i].setActor
adActorRespuesta = arregloPeliculas[iterador].setActor(busquedaDeActor);
if(adActorRespuesta == true){
cout << "Actor agregado con exito!"<<endl;
}
else{
cout <<"No se pudo agregar al actor..."<<endl;
}
}
}
}
cadena = "";
iterador++;
registrosPeliculas++;
}
inFile.close();
inFileActores.close();
}
User contributions licensed under CC BY-SA 3.0