gpt4 book ai didi

c++ - 在 Xcode 中使用 fstream 时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:31 26 4
gpt4 key购买 nike

我无法验证 REGISTER.txt 是否存在用于函数中的输入目的(见下文)。我的理解是,如果文件不存在,则文件不会被打开,文件流变量 (inData) 将为假。因此,我可以在 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();
}

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

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

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

我将完整目录放入文件中,这就成功了。

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

最佳答案

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

字符 *_getcwd(
字符*缓冲区,
最大长度
);

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

关于c++ - 在 Xcode 中使用 fstream 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com