C++中的文件路径表示技巧

原创 2015年07月07日 16:46:36

文件路径的表示可以分为绝对路径和相对路径:

  绝对路径表示相对容易,例如

  //pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); 给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\"

  vc工程默认访问的目录是工程目录,相对路径有以下多种形式,:

  //pDummyFile = fopen("dummy.bmp", "rb"); bmp文件就在vc工程目录下,和dsw文件同属一个目录。

  //pDummyFile = fopen("\\texture\\dummy.bmp", "rb"); 表示bmp文件在工程目录的同级目录texture中,因此路径是先退出工程目录再进入texture目录访问到bmp文件。“”表示退到当前目录的上一级目录(父目录)

  //pDummyFile = fopen(".\\texture\\dummy.bmp", "rb"); 表示bmp文件就在工程目录的子目录texture中,“。”表示当前默认目录,即vc工程目录,然后在进入其子目录texture访问到文件

  注意,对相对路径而言,路径表示中的“\”也要用双斜线"\\"

  1. #include <iostream>   

  2. #include <windows.h>   

  3. #include <string>   

  4. using namespace std;  

  5. int main()  

  6. {  

  7.     char buf[1000];  

  8.     int i=1000;  

  9.     GetCurrentDirectory(1000,buf);  //得到当前工作路径  

  10.     cout<<buf<<endl;  

  11.   

  12.     string a;  

  13.     a.assign(buf);  

  14.     cout<<a<<endl;  

  15.     //这里加入的路径必须是正确的路径,如果加入错误的路径,如大小写   

  16.     //和目录名不一样,还有空格,名字不相同等,都会导致SetCurentDirectory  

  17.     //设置路径不成功,从而导致GetCurrentDirectory获取不到正确的路径,这样  

  18.     //GetCurrentDirectory获取的路径就是当前路径或者是上一次SetCurrentDirectory  

  19.     //设置成功的那个路径,GetCurrentDirectory获取一般是不会出错的。  

  20.       

  21.     /**在这里添加路径的时候,每一次都用到两个\,这样做的原因是为了防止文件 

  22.     的目录名中出现转义字符,比如如果目录名字是以t开头的,则\t意义 

  23.     就是制表符,而不是目录名。并且惊奇的发现,在这里使用两个/可以达到相同 

  24.     的效果,不知道是什么原因,很可能是因为在操作系统内部就是这样做的,因为 

  25.     在cmd dos命令行下,路径都是以/分割的,而在文件目录名显示的时候则是以\分 

  26.     割的,而且在dos命令行下切换目录的时候这两种也都可以!甚至是两者混写都可以. 

  27.     为了规范都写成\\***/  

  28.   

  29.     //设置为当前工作路径为当时的上一级   

  30.     //a.append("//..//");   

  31.     //a=a+"..//";   

  32.     a.append("\\..\\");  

  33.     //随意设置路径,只要是正确的,否则会导致SetCurrentDirectory执行错误  

  34.     //a.append("//..//..//Service_Windows//Servic_Windows");  

  35.     //a.append("\\..\\Service_Windows\\Service_Windows");  

  36.     a.append("\\..\\Service_Windows//Service_Windows");  

  37.   

  38.     int test = SetCurrentDirectory(a.c_str());  //设置当前路径值  

  39.     if (test == 0 )  

  40.     {  

  41.         cout << "execute failed\n";  

  42.     }  

  43.     GetCurrentDirectory(1000,buf);  

  44.     //这里用两个反斜杠是必须得,因为这不通过操作系统来进行目录切换,   

  45.     //只是简单的字符串拼接   

  46.     strcat(buf,"\\Srvice_Windows\\Srvice_Windows");  

  47.     cout << buf << endl;  

  48.       

  49.     a.assign(buf);  

  50.     test = SetCurrentDirectory(a.c_str());  

  51.     if (test == 0 )  

  52.     {  

  53.         cout << "execute failed\n";  

  54.     }  

  55.     GetCurrentDirectory(1000,buf);  

  56.     cout<<buf<<endl;  

  57.   

  58.     return 0;  

  59. }  

 三、相对路径

    相对路径需要重点说一下,很多时候包含头文件会在这个地方产生迷惑。首先相对路径是指相对某个文件而言,可以理解为目标文件相对当前文件的路径。windows下表示相对路径的规则为:

    1、.\ 或 ./  表示当前目录,或同级目录;

    2、..\ 或 ../  表示父目录,或上级目录。

    在VC环境中,我测试的结果是正斜杠和反斜杠为相同效果,因此应该都可以用。

    如果在代码中用#include语句,相对路径是相对于包含该语句的代码文件,或所有包含这个头文件的文件而言;如果在附加路径中设置相对路径,是相对于当前.vcproj工程文件而言。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++中相对路径与绝对路径以及斜杠与反斜杠的区别

文件路径 正斜杠和反斜杠 正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径: 1、绝对路径表示相对容易,例如 ...
  • sszgg2006
  • sszgg2006
  • 2012年12月28日 13:34
  • 54742

windows平台下C++中文件路径的表达方式(绝对路径、相对路径)

本博客主要说明在windows平台下用C++语言表示文件绝对路径与相对路径的表示方法,测试通过。...
  • pengbo512103923
  • pengbo512103923
  • 2015年02月03日 16:02
  • 2885

C++文件路径的写法

文件路径 正斜杠和反斜杠 正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径: 1、绝对路径表示相对容易,例如 pDummyFile...
  • chengonghao
  • chengonghao
  • 2016年04月04日 18:40
  • 3269

C++中相对路径与绝对路径 文件路径

C++中相对路径与绝对路径以及斜杠与反斜杠的区别 文件路径  正斜杠和反斜杠  正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径...
  • qq_32541007
  • qq_32541007
  • 2016年03月28日 00:30
  • 5804

C/C++中读取中文路径文件的方法

转自 http://apps.hi.baidu.com/share/detail/33007444 有时候用ifstream或ofstream打开带有中文路径的文件会失败。 解决办法: 1、...
  • sibo626
  • sibo626
  • 2011年11月03日 10:14
  • 9550

C++文件流对象的学习及其windows磁盘文件路径的写法“/”

今天学习了文件流,想往磁盘文件中输入数据,出现了BUG,最终记得老师说过,windows路径写法有点不一样,是“/”,解决了问题。 #include #include using nam...
  • qq_34078945
  • qq_34078945
  • 2017年02月21日 20:00
  • 694

使用C++获取文件路径,已获取当前路径为基础

今天搞清楚了如果使用C++获取当前路径,并且已获取当前路径为基础,测试代码如下,如果有注释错误还请看到的高手指正,呵呵~~#include #include #include using ...
  • gukesdo
  • gukesdo
  • 2011年10月12日 15:56
  • 19574

C++:获取当前执行文件的路径方法(笔记)

代码示例: #include "Windows.h" int main() { char ExePath[MAX_PATH]; GetModuleFileName(NULL, ExePath, ...
  • a200800170331
  • a200800170331
  • 2016年09月13日 15:47
  • 1821

C++ 文件路径操作相关函数、获取dll所在的路径

首先,记录一个网址,感觉很有用,大部分的文件路径相关函数,里面都有源代码。 https://msdn.microsoft.com/en-us/library/windows/desktop/bb773...
  • hust_bochu_xuchao
  • hust_bochu_xuchao
  • 2016年11月22日 09:00
  • 1927

C/C++解析文件路径,获取盘符、路径、文件名及扩展名

其实也不算原创了,都是抄的msdn的内容。。。。 经常要处理跟文件相关的东西,免不了要做一些解析路径以及文件名扩展名的工作。 以前傻傻的自己去strstr斜杠,然后慢慢匹配解析,后来才发现有API...
  • jiratao
  • jiratao
  • 2013年08月05日 11:30
  • 13846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中的文件路径表示技巧
举报原因:
原因补充:

(最多只允许输入30个字)