案例:
/*程序1 ,执行正确*/
string filename;
cin>>filename; //从键盘输入d:\a.txt
fopen(filename,"r");
/*程序2 ,执行错误*/
string filename;
filename="d:\a.txt"; //错误,应为filename = "d:\\\a.txt";
fopen(filename,"r");
在这两个程序中,程序2不能正确打开文件,主要是由于转义字符的问题。程序二中应该是filename=“d:\\a.txt”;
程序1从标准输入流就不用使用\\
, 应该是与文件操作系统的约定有关或者输入流帮忙做了转换
相关知识点:
1、\\
是编译器的约定,是编译器将转义字符\\
转变为\
.而操作系统的约定,起接受的是,传送的也是\。
在程序2中,首先一点,path内的值必须是e:\a.txt你才能得到正确结果。
你看到的是
\\
,实际上:path=“e:\\
a.txt”; 转义后path的值为e:\a.txt输入值的时候直接把path的值填充为e:\a.txt,当然不需转换了
2、文件路径名还可以使用/