Question

Peu importe ce que j'essaie, je ne peux pas obtenir le code suivant pour fonctionner correctement.

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

au premier Cout << (inFile.good ()) ;, il imprime un 1 et au deuxième 0. Ce qui me dit que échoue dès que lire le fichier ouvre correctement, mais inFile dans de celui-ci . Le fichier a plus de lignes assez / caractères, donc il n'y a aucun moyen que j'ai essayé de lire après la fin du fichier par ce point.

Contenu du fichier:

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
Était-ce utile?

La solution 2

Il est avéré être un problème avec X-code. Je créé un projet en net haricots en utilisant exactement le même code et n'a eu aucun problème. Bizarre.

Mise à jour: Dans mon projet X-Code, j'ai changé mon SDK actif à partir de Mac OS 10.6 à Mac OS 10.5 et tout fonctionne bien maintenant.

Autres conseils

Il est un bug connu. A partir de Xcode 3.2.1 de Notes de version :

  

Le compilateur gcc par défaut 4.2 n'est pas   compatible avec la norme C ++   Bibliothèque Debug Mode. Programmes C ++   compilé avec Xcode 3.2 peut ne pas fonctionner   dans la configuration de débogage. pour fixer   cela, définir la version du compilateur à 4.0,   ou modifier la configuration de débogage de   Préprocesseur macros et retirez la   entrées:
  _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

Je reproduis et testé votre code et le fichier et ma sortie était 11 et les deux levelLW et numLevels ont été fixés comme prévu. Je prendrais certainement un regard dur sur les personnages cachés dans votre fichier (ou son absence). J'aime utiliser Notepad ++ avec « Afficher tous les caractères » activés. Mon fichier est exactement ce que vous avez publié avec un retour chariot et un saut de ligne à la fin de chaque ligne.

Vous avez dit le premier inFile.good () imprime 1. Cela devrait signifier le fichier ouvert OK. Parce que vous avez dit « cela fonctionne à travers le terminal, mais pas XCode » en post tehMick - pour ce que ça vaut la peine - quand je l'ai testé, je couru dans le problème suivant: mon IDE (C ++ Builder) exécute le programme d'un DEBUG (lorsque vous êtes en mode débogage). Je avais besoin de placer « sampleplanet » dans le répertoire DEBUG ou utiliser un chemin en plein air que l'on trouve le fichier comme « .. \\ 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.)

Une fois que je pris soin de tout problème ci-dessus a fonctionné comme prévu à l'aide du code ci-dessus et le fichier. J'ai vérifié le fichier dans Notepadd ++ pour confirmer la ligne après chaque [CR] [LF]. Si vous créez le fichier sous Linux, il peut avoir seulement [LF] cependant (je l'ai fait tout sous Windows).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top