Domanda

Non importa quello che provo, non posso ottenere il seguente codice per funzionare correttamente.

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

alla prima cout << (inFile.good ()) ;, stampa un 1 e al secondo uno 0. Il che mi dice che il file si apre correttamente, ma infile sta venendo a mancare non appena leggere da esso . Il file ha più di linee abbastanza / caratteri, quindi non c'è alcun modo in cui ho cercato di leggere oltre la fine del file da quel punto.

Contenuto del file:

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
È stato utile?

Soluzione 2

Si è rivelato essere un problema con X-Code. Ho creato un progetto in grani netti utilizzando lo stesso codice esatto e non ha avuto problemi. Strano.

Aggiornamento: Nel mio progetto X-Code, ho cambiato il mio SDK attivo da Mac OS 10.6 a Mac OS 10.5 e tutto funziona bene ora.

Altri suggerimenti

E 'un bug noto. Da Xcode 3.2.1 di Note di rilascio :

  

Il gcc 4.2 compilatore di default non è   compatibile con lo standard C ++   Debug Mode Biblioteca. C ++ programmi   compilato con Xcode 3.2 potrebbe non funzionare   nella configurazione di debug. Aggiustare   questo, impostare la versione del compilatore a 4,0,   o modificare la configurazione di debug   Preprocessore macro e rimuovere il   entries:
  _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

ho riprodotto e testato il codice e di file e la mia uscita 11 anni ed entrambi levelLW e numLevels stati fissati come previsto. Avrei sicuramente prendere uno sguardo duro a personaggi nascosti nel file (o mancanza). Mi piace usare Notepad ++ con "Mostra tutti i caratteri" abilitate. Il mio file è esattamente quello che hai postato con un ritorno a capo e un avanzamento riga alla fine di ogni riga.

Hai detto che la prima inFile.good () stampa le 1. Che dovrebbe significare il file aperto OK. Perché lei ha detto "che funziona attraverso il terminale, ma non XCode" in tehMick post - per quel che vale - quando ho provato questo, mi sono imbattuto nel seguente problema: mio IDE (C ++ Builder) viene eseguito il programma da una directory DEBUG (quando si è in modalità debug). Avevo bisogno di inserire il "sampleplanet" nella directory debug o utilizzare un percorso a cielo aperto che ha trovato il file come ".. \\ 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 volta ho preso cura di quanto sopra problema tutto ha funzionato come previsto utilizzando il codice di cui sopra e il file. Ho controllato il file in Notepadd ++ per confermare il [CR] [LF] dopo ogni riga. Se si crea il file in Linux, si può avere solo [LF] tuttavia (ho fatto tutto sotto Windows).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top