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/



Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐