VC中获取文件的相对路径与绝对路径

本文介绍了在VC中获取文件的相对路径和绝对路径的两种方法。对于相对路径,可以通过.和..来指定同级或上一级目录。而获取绝对路径,可以使用GetCurrentDirectory结合字符串操作,或利用GetModuleFileName获取程序模块的全路径。这些方法有助于在不同环境下正确处理文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ⅰ、获取相对路径

如果当前打开的文件中要寻找同级的目录文件就要用到 .\或者 ./ VC编译器都可以识别。例如#define ".\XX\XX\xx.h"

如果当前打开的文件中要寻找在上级的目录文件就要用到  ..\ 或者 ../ VC编译器都可以识别。例如#define "..\XX\XX\xx.h"

通过这样简单的标识,vc相对路径的问题就解决了,这样也就避免了设置繁琐的系统路径。当然了,设置相对路径要在编码的时候对文件的存放层次关系特别清楚,否则统一修改路径将会带来很大的工作量。

Ⅱ、绝对路径

方法1:

CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
strPath.ReleaseBuffer(); 
filename=strPath+"\\"+dlg.GetFileName(); 

 

方法2:

 

使用GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径

[cpp] view plaincopyprint?

  1. CString strPath;  
  2. GetModuleFileName(NULL,strPath,MAX_PATH);  
  3. strPath.ReleaseBuffer();  
  4. filename=strPath+"\\文件名.*";                 

在开发工程中,往往需要知道当前程序本身所在目录。一种方法是在程序安装的时候利用安装程序把文件路径写入注册表。在较大的程序中,这种方法比较常用;另一种,就是在程序得到路径。这样,程序随便移动到哪里,都可以得到正确的路径。这也是本文介绍的方法。

 

 .\\是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的;
GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\a.dll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名。

 

 

实例:

    CString             strPath;
    CString             filePath;

CString   GetFilePath() 

    TCHAR pFileName[MAX_PATH + 1]; 
    GetModuleFileName(NULL, pFileName, MAX_PATH); 

    strPath = pFileName;
    CString strPath1,strPath2;
    strPath1 = strPath.Left(strPath.ReverseFind('\\'));//strPath1=E:\A项目\HIDD\Main\Debug
    strPath2 = strPath1.Left(strPath1.ReverseFind('\\'));//strPath2=E:\A项目\HIDD\Main
    filePath = strPath2 + "\\";

    return  filePath;// filePath=E:\A项目\HIDD\Main\
}

应用

CString   strXmlPath; 
    strXmlPath.Format(_T("%s%s"),GetFilePath(),_T("Configure\\SoundFile.xml"));

//strXmlPath=E:\A项目\HIDD\Main\Configure\\SoundFile.xml


        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值