Xcode每次都给出不同的输出(但不是正确的输出)

时间:2013-03-25 14:54:52

标签: c++ 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

或有时没什么。它没有任何模式。我正在使用Snow Leopard和Xcode 4.2

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;
}