Error C++ !! Error Abrir Archivo !! Urgente :(

P

Hola, estoy intentando hacer una práctica en la que tengo que leer un archivo txt, pero no se por qué no se abre, si no que el programa en ejecucion se queda parado sin hacer Hola, estoy intentando hacer una práctica en la que tengo que leer un archivo txt, pero no se por qué no se abre, si no que el programa en ejecucion se queda parado sin hacer nada...

Parte del código es:

    char * ruta_archivo;
string ruta;

cout << endl << endl << "A continuacion, se leeran de un fichero los puntos ";
cout << "muestra obtenidos en la experimentacion. Para ello, es necesario que ";
cout << "introduzca la ruta donde se encuentra dicho fichero, por ejemplo";
cout << ", C:/Home/ejemplo.txt.";

Ahora llamo a una funcion a la que entre otras cosas le paso ese nombre de ruta y abre el archivo:

ifstream Puntos_Muestra (route);

	// Se comprueba que el fichero se ha abierto correctamente
	if (!Puntos_Muestra)
	{
		//ESTO SE EJECUTA CORRECTAMENTE
                    cout << endl << endl;
		cout << "No se pudo abrir el fichero. No existe o la ruta no es valida.";
		cout << endl << endl;
		exit(1);
	}
	
	else
	{
                    // EL PROGRAMA SE PARA AQUI
		cout << "hola";
		// Dado que el fichero vendra con formato Vi, Wi, Xi... Zi
		// F(Vi, Wi, Xi....Zi), habra que declarar variables para leer dichos
		// valores
		float x, f_x_y;

                    ........
           }

Agradecería mucho vuestra ayuda, gracias.

r2d2rigo

Usa is_open para ver si esta abierto. Y para leer la ruta no uses cin, sino cin.getline. O si no, usa cin.ignore para borrar el newline sobrante.

Ulmo

No entiendo ese if (!Puntos_Muestra), carece de todo sentido, ademas no das el valor de la variable "route" q a saber lo q tienes puesto.

Yo para leer siempre uso la clase fstream "#include <fstream>" y con lo facil q es en tu caso que solo tienes q leer floats el hacer:

ifstream file (input_file);
float x, y, z;
while (file >> x){
file >> y;
file >> z;
}

Y por ahi enmedio ir metiendo el codigo q necesites....

r2d2rigo

#3 mal. Con tu while (file >> x) estas haciendo lecturas innecesarias que pueden descartar datos. Es mejor !file.eof() && file.good().

1
Ulmo

#4 Si partes como precondicion q el archivo solo tiene floats y q cumple perfectamente la estructura q esperas, no haces ninguna lectura innecesaria, cuando llega al final del archivo peta y sale del while.

Entiendo q para programas más elaborados que precisan de un mejor control sobre los archivos q abres puede parecer una mierda, pero para una simple practica q te garantiza la correccion del archivo de entrada, más q suficiente.

Usuarios habituales