Xcode中给出了不同的输出,在每个时间(但不正确的输出)
问题描述:
我有一个非常简单的程序,读取一个文件包含文本:Xcode中给出了不同的输出,在每个时间(但不正确的输出)
start
costam
stop
的程序是:
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, const char * argv[])
{
printf("init\n");
char c = NULL;
ifstream file;
file.open(argv[1]);
while (file.good()){
c = file.get();
printf("%c", c);
}
return 0;
}
Xcode的构建初始化从控制台提供了:
init
start
costam
stop?
但Xcode的控制台给我:
init
或
init
start
或
init
start
costam
或有时什么也没有。它没有模式。我使用的是雪豹和Xcode 4.2
答
首先修正错误
while (file.good()){
c = file.get();
printf("%c", c);
}
应该
for (;;){
c = file.get();
if (!file.good())
break;
printf("%c", c);
}
,因为你只应该阅读,而不是之前后检查file.good()
。这将摆脱虚假?你会在你的第一个输出中看到。它是否会帮助解决我不知道的主要问题。可能不会。
答
您确实不应该将C I/O(printf
等)与C++ I/O(ifstream
)混合使用。试试这个:
int main (int argc, const char * argv[])
{
cout << "init" << endl;
char c;
ifstream file;
file.open(argv[1]);
while (file.good()) {
c = file.get();
cout << c;
}
cout << endl;
return 0;
}
谢谢你。它解决了整个问题。但这真的很奇怪。 – user2207925 2013-03-25 15:05:50
@ user2207925我很惊讶。 – john 2013-03-25 15:19:58