有这样两段程序:
1.
string path;
cin>>path;  //从键盘输入e:\a.txt
fopen(path,"r");2.
string path;
path="e:\a.txt";
fopen(path,"r");这样,第二段不能正确打开文件。我知道这是由于转义字符的问题。第二段应该是
path="e:\\a.txt";
可是为什么从标准输入流就不用使用\\呢?这是什么原理呢?
是否是因为输入流已经帮助做了转换?(用C的传统函数fscanf()也不会出问题)
请教!

解决方案 »

  1.   

    >>
    注意,流的基础是什么,会做自动转译的
      

  2.   

    首先一点,path内的值必须是e:\a.txt你才能得到正确结果。你看到的是\\,实际上:
    path="e:\\a.txt";转义后path的值为e:\a.txt输入值的时候直接把
    path的值填充为e:\a.txt,当然不需转换了
      

  3.   

    C++编译器中的\用做了转义符,所以要表示\必须用\\,,,
    用cin接收键盘输入的时候当然只要输入一个了~~
    我刚开始的时候就犯过这个错误,^_^