不管我怎么努力,我不能正确地得到下面的代码来工作。

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

在第一COUT <<(inFile.good()),则它输出一个1,并且在第二0。这告诉我,该文件被正确地打开,但INFILE作为来自它在读一旦失败。该文件具有多个然后足够行/字符,所以没有办法我试图读取经过由该点的文件的末尾。

文件内容:

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
有帮助吗?

解决方案 2

它原来是用X-代码的问题。我创建使用完全相同的代码在净豆的项目,并没有任何问题。怪异。

更新: 在我的X-代码项目,我改变了我的活动的SDK从Mac OS 10.6到Mac OS 10.5和现在的一切工作正常。

其他提示

这是一个公知的错误。在Xcode 3.2.1的的发行说明

  

默认的gcc 4.2编译器是不   与标准C ++兼容   图书馆调试模式。 C ++程序   和Xcode 3.2编译可能无法正常工作   在调试配置。修理   这一点,设置编译器版本4.0,   或编辑的调试配置的   预处理器宏和移除   项:点击   _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1

我转载并测试您的代码和文件,我的产量为11和levelLW和numLevels都被设定为预期。我肯定会走在隐藏字符很难看在你的文件(或缺乏)。我喜欢用记事本++用“显示所有字符”启用。我的文件正是你什么张贴在每个行的末尾回车和换行。

您说的第inFile.good()打印出1。这应该意味着打开的文件确定。因为你说:“它的工作原理通过终端,但没有的XCode”在tehMick岗位 - 为它的价值 - 当我测试了这一点,我遇到了以下问题:我的IDE(C ++ Builder中)运行程序了DEBUG目录(当你在调试模式)。我需要的地方“sampleplanet”在DEBUG目录或使用的路径在打开所发现像“.. \\ 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.)

在我把上述问题都使用上面的代码和文件按预期工作的关心。我检查文件中Notepadd ++确认[CR] [LF]每行之后。如果您在Linux中创建的文件,它可能只有[LF]但是,(我做Windows下的所有内容)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top