文件无法打开,即使 stat() 可以找到它
File won't open, even though stat() can find it
我有一个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";
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 为什么控制台要求输入,即使代码中没有输入
- g++ 说函数不存在,即使包含正确的标头
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 为什么可以将左值传递给"std::async",即使它引用了右值
- muQueue.front() 给出了 const 实例,即使我没有将其标记为 const
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 即使使用调试编译标志,表达式也是"optimized out"
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- Qt:"Q3DScatter"即使包含在内也无法识别
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么文件不是由 F 流创建的,或者即使它是输出只是垃圾值?
- 文件无法打开,即使 stat() 可以找到它