c 和 c++ 中的文件路径表示

本文详细介绍了文件路径的表示方法,包括绝对路径和相对路径,并通过实例演示了如何使用C++中的sprintf函数正确构建文件路径。

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

1.文件路径的表示可以分为绝对路径和相对路径:
①绝对路径表示相对容易,例如
pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb");   给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\"
vs工程默认访问的目录是工程目录,相对路径有以下多种形式,:
pDummyFile = fopen("dummy.bmp", "rb"); bmp文件保存在主程序同一目录下。


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


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

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


② sprintf函数中,第二个实参"%s\\\\%s_%d_%d.txt",本意是添加文件夹路径符号“\”,但由于此处是显式字符,需要用“\\\\”表示,看例子和程序结果更好理解。


2.例子:

#include <fstream>     
#include <string>
using namespace std;


int main () {
  string file_path_1, file_path_2;
  char out_path[] = "..\\results\\error_rate";
  char net_type[] = "MRAN";
  char file_path[1024];
  const int number_repeats = 2;
  const int number_rates = 2;
  ofstream ofs;
  file_path_1  = "C:\\Users\\zuyuanzhu\\Documents\\visual studio 2012\\Projects\\ofstreamout\\ofstreamout\\test1.txt"; //绝对路径
  file_path_2 = "..\\results\\test2.txt";  //相对路径
  for(int i = 0; i<number_repeats; i++){
	  for(int j = 0; j<number_rates; j++){
		sprintf(file_path ,"%s\\\\%s_%d_%d.txt", out_path, net_type, i, j);//文件路径中的“\\”要用“\\\\”表示
        ofs.open (file_path, ofstream::out | ofstream::app);
        ofs << " The error rate is:";
        ofs.close();
	  }
  }


  ofs.open (file_path_1, ofstream::out | ofstream::app);
  ofs << " This is file 1";
  ofs.close();


  ofs.open (file_path_2, ofstream::out | ofstream::app);
  ofs << " This is file 2";
  ofs.close();
  return 0;
}


注意,test1.txt和text2.txt都可以由程序生成,但是,文件路径中所包含的文件夹必须手动事先建立好。

            sprintf函数中,第二个实参"%s\\\\%s_%d_%d.txt",本意是添加文件夹路径符号“\”,但由于此处是显式字符,需要用“\\\\”表示。


3.程序结果:


① test1.txt文件路径以及文件内容的写入情况:





② test2.txt文件路径以及文件内容的写入情况:





③ sprintf 函数中,文件夹路径符号的使用结果:






关于 std::fstream::open 函数的详细参考资料:
http://www.cplusplus.com/reference/fstream/fstream/open/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值