Pregunta

Tengo un archivo de datos simple que quiero cargar, en un programa en C ++. Por razones extrañas, no funciona:

  • Lo probé en Windows suponiendo que el archivo estaba en el mismo directorio:. no
  • Lo probé en Windows moviendo el archivo en el directorio C: \:. trabajado
  • Lo he probado en Linux poner el archivo en el mismo directorio:. no

El fragmento:

void World::loadMap(string inFileName) {
  ifstream file(inFileName.c_str(), ios::in);
  if (file) {
  }
  else 
  {
    cout<<"Error when loading the file \n";
    exit(-1);
  }
}

Me llaman el método loadMap como esto:

World::Instance()->loadMap("Map.dat");

(World es una clase singleton).

¿Cómo puedo encontrar el error exacto, mediante el uso de try-catch o cualquier otra cosa?

¿Fue útil?

Solución

El problema es el directorio de trabajo.

Cuando se especifica una ruta relativa para un archivo que utiliza el directorio de trabajo (que puede no ser el mismo que el directorio donde se almacena que la aplicación del sistema de archivos).

  • Así que, ya sea necesidad de utilizar una ruta absoluta.
  • O es necesario encontrar el directorio de trabajo actual y especifique el archivo en relación a eso.
  • O cambiar el directorio de trabajo actual.

Otros consejos

Por defecto, un archivo en su defecto para abrir (o cualquier otra operación de E / S) no plantea una excepción. Puede cambiar este comportamiento, pero el nivel todavía proporciona ningún medio para extraer de una excepción la razón exacta para el fracaso.

nombres de archivos de Linux entre mayúsculas y minúsculas.
Es en realidad el nombre de su archivo map.dat?

Además, ¿trató de poner el archivo en el directorio actual?

El comentario de Roger Pate:

  

El uso de "./filename" (el ./ se asume y ni siquiera es necesario) es portable a través de Windows y Linux, el problema podría ser que la caquexia crónica no es lo que él piensa que es, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top