Ifstream在子文件夹中找不到文件

时间:2015-11-18 15:15:57

标签: c++ file directory

这似乎是一个简单的问题,但即使在互联网的帮助下,我也无法解决这个问题。

所以基本上,因为我的项目在文件上变得相当大,我想通过创建子文件夹来清理工作目录。所以我感动了着色器文件到Ressources / Shaders /。

现在我只想像往常一样用新路径加载它们,但我总是收到错误。

ifstream fin("Ressources/Shaders/texture.vs");

不起作用。以及

.\\Ressources\\Shaders\\textures.vs
./Ressources/Shaders/textures.vs
/Ressources/Shaders/textures.vs
\\Ressources\\Shaders\\textures.vs
Ressources/Shaders/textures.vs
Ressources\\Shaders\\textures.vs

我也试过没有大写字母。 而

"texture.vs"

当它仍然在工作目录中时工作。

我感谢任何提示。

1 个答案:

答案 0 :(得分:1)

在Visual Studio中,您可以检查当前工作目录是什么(此路径必须与您尝试打开的文件的路径匹配):

char * dir = getcwd(NULL, 0);    
cout << dir << endl;

然后你可以通过尝试打开它来检查你的文件是否存在(大小写无关紧要):

ifstream fin("Ressources\\Shaders\\texture.vs");
if (fin)
    cout << "File Exists" << endl;
else 
    cout << "File Doesn't Exist" << endl;

如果你的路径是正确的,这应该有效。

如果您想查看实际访问的路径,可以执行以下操作:

char * dir = getcwd(NULL, 0);   
printf("%s\\Ressources\\Shaders\\texture.vs", dir);