vs2008,vs2015无法读取文件:怪异的行为

时间:2017-05-02 16:33:12

标签: c++ visual-studio permissions fstream permission-denied

当我尝试使用ifstream读取文件时,我在使用VS2008和VS2015的Windows 10环境中有一种非常奇怪的行为。

我使用以下简单代码:

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>

int main()
{
    std::ifstream ifs("C:\\Users\\dd\\Desktop\\test.txt");
    if(ifs.is_open())
    {
        std::string line;
        while(std::getline(ifs,line))
        {
            std::cout << line << "\n";
        }
    }
    else
    {
        std::cout << std::strerror(errno) << "\n";
    }

    return 0;
}

显然该文件存在。

当我尝试读取文件.txt时,我得到了:

  

许可被拒绝

我以管理员身份运行Visual Studio,我有权阅读该文件,因为我可以使用Notepad ++打开它。

如果我更改文件扩展名,例如.test,我可以正确读取文件内容,一切都按预期工作。

我卸载然后重新安装VS2008,VS2015和所有C ++ Redistributable,但没有任何改变。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

也许您的文件未命名为test.txt。您是否检查过您的文件名为test.txt而不是test.txt.txt(隐藏扩展名)?

尝试在命令提示符中列出文件以查看真实文件名是什么: CMD&GT;

  cd C:\Users\dd\Desktop\
  dir | findstr test

另一种可能性:

  • test.txt可能会使用来自另一个人的类似字母 语言(在您的代码或实际文件名中)。

  • 代码中没有正确引用的斜杠(例如C:\Users\\而不是C:\\Users\\dd\\)。尝试更改为正斜杠。