Pregunta

No importa lo que intente, no puede obtener el siguiente código para que funcione correctamente.

ifstream inFile;
inFile.open("sampleplanet");
cout << (inFile.good()); //prints a 1
int levelLW = 0;
int numLevels = 0;
inFile >> levelLW >> numLevels;
cout << (inFile.good()); //prints a 0

en el primer tribunal << (inFile.good ()) ;, que imprime un 1 y en el segundo un 0. Lo que me dice que el archivo se abre correctamente, pero INFILE está fallando tan pronto como se lee en el de ella . El archivo tiene más que suficiente líneas / personajes, así que no hay manera de que han tratado de leer más allá del final del archivo por ese punto.

Contenido del archivo:

8
2
#level 2
XXXXXXXX
X......X
X..X..XX
X.X....X
X..XX..X
XXXX...X
X...T..X
XXX..XXX
#level 1
XXXXXXXX
X......X
X..X.XXX
X.X..X.X
X..XX..X
X......X
X^....SX
XXX.^XXX
¿Fue útil?

Solución 2

Al final resultó ser un problema con X-Code. He creado un proyecto en granos netos utilizando el mismo código exacto y no tuvo problemas. Raro.

Actualización: En mi proyecto X-Code, he cambiado de SDK activa desde Mac OS 10.6 a Mac OS 10.5 y todo funciona bien ahora.

Otros consejos

Es un error conocido. De Xcode 3.2.1 de Notas de la versión :

  

El valor por defecto de gcc 4.2 compilador no es   compatible con el estándar de C ++   Biblioteca modo de depuración. Los programas en C ++   compilado con Xcode 3.2 puede no funcionar   en la configuración de depuración. Arreglar   esto, establecer la versión del compilador a 4,0,   o editar la depuración de configuración de   Preprocesador macros y retire el   entradas:
  _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

I reproduce y se prueba su código y archivo y mi salida fue de 11 y ambos levelLW y numLevels se establecieron como se esperaba. Definitivamente, me gustaría tener una mirada a los personajes ocultos en su archivo (o falta de ella). Me gusta usar Notepad ++ con "Mostrar todos los caracteres" habilitadas. Mi archivo es exactamente lo que usted envió con un retorno de carro y un avance de línea al final de cada línea.

Usted dijo que la primera inFile.good () imprime 1. Eso debería significar el archivo abierto en Aceptar. Debido a que usted ha dicho "que funciona a través del terminal pero no XCode" en tehMick posterior - por lo que vale la pena - cuando probé esto, me encontré con el siguiente problema: mi IDE (C ++ Builder) se ejecuta el programa de un directorio de depuración (cuando se encuentra en modo de depuración). Necesitaba lugar "sampleplanet" en el directorio de depuración o utilizar una ruta al aire libre que se encuentra el archivo como ".. \\ sampleplanet".

+MyProjectDirectory
|  mymain.cpp (Even though this is where I had the source file..)
|  sampleplanet
+--DebugDirectory
     mymain.obj
     mymain.exe (the program runs out of this directory.)

Una vez que se hizo cargo de la cuestión por encima de todo lo trabajado como se esperaba con el código y el archivo anterior. Revisé el archivo en Notepadd ++ para confirmar la [CR] [LF] después de cada línea. Si crea el archivo en Linux, puede tener solamente [LF] Sin embargo (lo hice todo bajo Windows).

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