需求描述:C++程序需要将部分文件的绝对路径以字符串的形式保存下来,而在 C++的一般方法中只能得到路径的相对表达方式。
解决方法:将相对路径转换为绝对路径的代码实现如下
//filePathbuf变量是保存着相对路径的char型数组,dir用来保存绝对路径
char dir[1024]="";
//1.转换绝对路径到dir
#ifdef _WIN32
_fullpath(dir,filePathbuf,1024);
#else
realpath(filePathbuf,dir);
#endif
//2.替换绝对路径中的'/'为'\'
//因为上述方法转换出来的绝对路径之间会以'/'分隔,例如“C:/user/desktop”,字符串处理遇到'/'一般会报错,下面一行代码将'/'全部替换为'\'
for(int i=0;dir[i]!=0&&i<1024;i++){
if(dir[i] == 92){
dir[i]='/';}
}