Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Xcode中的fstream有问题_C++_Xcode_Fstream_Ifstream_Dev C++ - Fatal编程技术网

C++ Xcode中的fstream有问题

C++ Xcode中的fstream有问题,c++,xcode,fstream,ifstream,dev-c++,C++,Xcode,Fstream,Ifstream,Dev C++,我在验证函数中是否存在用于输入的REGISTER.txt时遇到问题(见下文)。我的理解是,如果文件不存在,那么文件将不会被打开,文件流变量(inData)将为false。因此,我可以在if/else语句中使用该变量来验证它是否打开。但是,即使REGISTER.txt与我的.cpp文件位于同一目录中,我的代码仍然表示它没有打开 但事情是这样的。当我在Dev-C++编译器中运行相同的代码时,它工作正常,并且找到了文件。现在,我知道编译器是不同的,但我不明白是什么导致了这种差异。我首选的IDE是Xco

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

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

提前谢谢你的帮助

另外,我的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();
}
编辑 我花了40分钟试图解决这个问题,15分钟写了这个问题,5分钟后我就取得了巨大的进步。你不喜欢吗

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


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

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

char*\u getcwd(
字符*缓冲区,
int maxlen
);


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

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

char*\u getcwd(
字符*缓冲区,
int maxlen
);

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

REGISTER.txt与my.cpp文件位于同一目录中

REGISTER.txt需要与二进制文件位于同一目录中(构建/发布或其他位置,取决于构建设置)

REGISTER.txt与my.cpp文件位于同一目录中


REGISTER.txt需要与二进制文件位于同一目录中(生成/发布或其他位置,取决于您的生成设置)

谢谢。为了更进一步,为了更改构建目录,我进入了Product->Scheme->Edit Scheme。然后我将工作目录更改为我的cpp和txt文件所在的位置。谢谢。为了更进一步,为了更改构建目录,我进入了Product->Scheme->Edit Scheme。然后我将工作目录更改为我的cpp和txt文件所在的位置。
if (error) {
    //Function encountered error. Exits program
    system("PAUSE");
    return 99;
}