如何在Visual Studio c ++ 2010中使用stat检查文件是否存在
How to check if a file exists with stat in visual studio c++ 2010?
这是我用于检查我的Visual Studio 2010 c ++项目中是否存在文件的代码:
bool GLSLProgram::fileExists( const string & fileName )
{
struct stat info;
int ret = -1;
ret = stat(fileName.c_str(), &info);
return 0 == ret;
}
我不确定为什么当该文件确实存在时,它为"shaders/color.vert"返回 false,并且着色器是我的项目主文件夹中的一个文件夹。
你能看出不对劲吗?
谢谢
好的,为了说明从IDE运行的怪癖,这是我做的一个小测试。希望这可以帮助您弄清楚相对路径在 VS 中的工作原理。
所以我的文件夹层次结构如下所示:
/_Sandbox
_Sandbox.sln
/Debug
_Sandbox.exe
/shaders
color.vert
/_Sandbox
_Sandbox.proj
main.cpp
代码如下所示:
#include <iostream>
#include <string>
#include <sys/stat.h>
int main(int argc, char* argv[])
{
struct stat info;
std::string path = "shaders/color.vert"; // To not I get the same behavior with "shaders\color.vert"
int ret = stat(path.c_str(), &info);
ret == 0 ? std::cout << "File found." << std::endl : std::cout << "File doesn't exist." << std::endl;
std::cin.get();
return 0;
}
因此,如果我在 IDE 中运行它,我会得到"文件不存在",如果我在 IDE 外部运行它,我会得到"找到文件"。为了让程序从VS内部找到着色器文件,我必须像这样放置着色器文件夹:
/_Sandbox
_Sandbox.sln
/Debug
_Sandbox.exe
/_Sandbox
/shaders
color.vert
_Sandbox.proj
main.cpp
但是,您可以获取代码以从 IDE 内部和外部查找文件夹。您要做的是转到项目的设置。在"调试"中,将"工作目录"更改为$(SolutionDir)$(Configuration)
希望这能为您解决问题。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试图让变量检查数组中的某些内容
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 如何检查线程是否锁定
- 清除前检查矢量
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 如何在Visual Studio c ++ 2010中使用stat检查文件是否存在
- 通过stat with path检查dir是否存在
- File stat()vs access()来检查目录上的权限