当我尝试使用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,但没有任何改变。非常感谢任何帮助!
答案 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\\
)。尝试更改为正斜杠。