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访问到文件
①绝对路径表示相对容易,例如
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/