我在验证函数中用于输入目的的 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;
}
EDIT
通常它是程序所在的目录。如果您想确定,请使用 _getcwd 获取当前目录或仅包含父目录。
char *_getcwd(
char *buffer,
int maxlen
);
但是,您应该尽量不要使用完整路径,因为当您在另一台计算机上运行程序时,它可能会有所不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)