文件无法打开,即使 stat() 可以找到它

File won't open, even though stat() can find it

本文关键字:stat 即使 文件      更新时间:2023-10-16

我有一个c++文档,我需要打开一个文件。我没有使用相对路径来引用我的文件。我目前使用的是硬盘驱动器上的完整文件路径,不过稍后我会切换到只使用当前目录。在任何情况下,我都知道这个文件被正确引用并且是可打开的,因为我已经对文件名执行了stat(),它返回了关于该文件的所有正确信息。下面是发生的基本过程:

string fName = "C:\Users\[user]\Downloads\file.DAT";
ifstream inFile;
inFile.open(fName);
struct _stat buf;                        // I put these lines here to test that
int result = _stat(fName.c_str(), &buf); // the file is being referred-to right
inFile >> levelnumber;
if(inFile.fail())  // inFile.fail() keeps evaluating to TRUE
    ThrowError("Corrupt or inaccesible .DAT file."); // I wrote ThrowError

无论如何,inFile.fail()一直求值为true,即使文件肯定被正确引用了(这就是调用_stat()检查的内容)。

我做错了什么?: P

您的测试没有告诉您文件是否可以打开。您的测试告诉您的是无法打开文件或无法读取levelnumber。要测试文件是否打开,可以在调用open()之后检查文件。如果文件确实可读,它应该转换为true:

std::ifstream inFile(fName);
if (!inFile) {
    std::cerr << "failed to open '" << fName << "' for readingn";
}
相关文章: