用C ++加载文件,设置了failbit,我无法弄清楚原因

时间:2010-12-25 20:06:13

标签: c++ fstream ifstream

  

可能重复:
  Failing to read file loaded with ifstream

以下文件的输出为:00100。 这向我表明设置了failbit。问题是我无法弄清楚为什么设置它。有人有分享的见解吗?

#include <fstream>
#include <iostream>
int main()
{

    std::ifstream paths_in("C:\\Users\\bill hank\\AppData\\bot_plugins\\directory_listing.txt", std::ios::in);
    std::cout << paths_in.good();
    std::cout << paths_in.is_open();
    std::cout << paths_in.fail();
    std::cout << paths_in.eof();
    std::cout << paths_in.bad();
    while (paths_in.good())
    {
        char q[5000];
        paths_in.getline(q, 5000);
        std::cout << q;
    }
    paths_in.close();
    std::cout << "Press ENTER to continue...";
    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
    return 0;
}

编辑:我明白了。哇,我对此答案感到恼火。基本上Windows允许您说明是否要显示文件扩展名。此Windows安装设置为表示不应显示扩展名。所以,当我一次又一次地检查文件时,我看到:directory.txt并认为这意味着目录的一切都很好,实际上文件名是directory.txt.txt

2 个答案:

答案 0 :(得分:2)

从我的角度来看,您的代码没有任何问题,因此必须在您的环境中出错:

  • 您检查了文件位置吗?
  • 您确定您确实拥有阅读该文件的权限吗?
  • 该文件是否已由其他进程以独占模式打开(例如,您可以使用process explorer进行检查)?

答案 1 :(得分:0)

写一个对CreateFile的调用,看看你得到的错误代码。