在Xcode中遇到fstream问题

时间:2013-10-30 02:41:47

标签: c++ xcode fstream ifstream dev-c++

我在函数中验证是否存在REGISTER.txt用于输入目的(见下文)。我的理解是,如果文件不存在,则不会打开文件,文件流变量(inData)将为false。因此,我可以在if / else语句中使用该变量来验证它是否打开。但即使REGISTER.txt与我的.cpp文件位于同一目录中,我的代码仍然说它没有打开。

但事情就是这样。当我在Dev-C ++编译器中运行相同的代码时,它工作正常并找到该文件。现在,我理解编译器是不同的,但我不明白是什么导致了这里的差异。我首选的IDE是Xcode,所以我想学习如何使用Xcode中的文件进行I / O.

提前感谢您的帮助。

P.S。我的Xcode项目引用了该文件,因此它不像项目没有与文件连接。

void ReadVehicleRegInfo(char& vehicleType, string& licensePlate,
                    int& modelYear, float& origTaxValue, bool& error)
{
    ifstream inData;

    string inputFile = "REGISTER.txt";
    inData.open(inputFile.c_str());        //File contains registration info

    if (!inData) {
        //File does not exist. Exit function
        cout << inputFile << " does not exist. Program will now terminate"
             << endl << endl;
        error = true;

        return;
    } else {
        //File exists - continue with program
        cout << inputFile << " found";
    }

    inData.close();
}

在我的main()函数中,我有以下代码向用户发出错误信号:

if (error) {
    //Function encountered error. Exits program
    system("PAUSE");
    return 99;
}

修改 的 我花了40分钟试图解决这个问题,15写了这个问题,然后我发布了5分钟后我取得了巨大的进步。你不喜欢那个吗?

我把完整的目录放到了文件中,这就完成了。

然而,这并不理想。接下来的问题是如何避免这样做? Xcode的默认目录是什么?

2 个答案:

答案 0 :(得分:1)

通常它是您的程序所在的目录。如果要确定,请使用_getcwd获取当前目录或仅包含父目录。

char *_getcwd( char *buffer, int maxlen );

但是,您应该尝试不使用完整路径,因为在另一台计算机上运行程序时可能不一样。

答案 1 :(得分:0)

  

REGISTER.txt与我的.cpp文件在同一目录中

REGISTER.txt需要与二进制文件位于同一目录中(build / Release或其他位置,具体取决于您的构建设置)