我有一个非常简单的程序,它读取包含文本的文件:
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
或有时没什么。它没有任何模式。我正在使用Snow Leopard和Xcode 4.2
答案 0 :(得分:0)
首先修复错误
while (file.good()){
c = file.get();
printf("%c", c);
}
应该是
for (;;){
c = file.get();
if (!file.good())
break;
printf("%c", c);
}
因为您只应在之后检查{/ 1}} ,而不是之前。这将摆脱虚假?你在第一个输出中看到了。它是否有助于解决我不了解的主要问题。可能不是。
答案 1 :(得分:0)
你真的不应该将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;
}