问题描述
相对路径换成绝对路径代码可以正常工作,但是换成相对路径就提示找不到文件。源代码和文件在同一目录下呀,这是怎么回事呢?
大概率是运行程序的位置和源文件的位置不相同
解决办法
使用下面代码打印当前程序的工作目录
// 打印当前程序的工作目录
char buffer[256];
char *val = getcwd(buffer, sizeof(buffer));
if (val) {
std::cout << buffer << std::endl;
}
果然代码运行目录和源文件代码位置不一样
切换目录
找到了代码的运行位置后就是要修改文件位置,下面有一些表示相对路径的常见方式
- 使用.表示当前路径,如./test.txt表示当前目录下的text.txt文件
- 使用..表示当前目录的上级目录,如当前目录为/first/second/three/,使用../test.txt将表示在second目录下找到test.txt文件
- .和..可以结合使用