在 vc里面,从一个编辑框中间取到某文件的路径,比如是 d:\asd.txt,但是我需要把这路径传另外一函数,也就是要 转换为 d:\\asd.txt,怎么变换啊 ?谢谢

解决方案 »

  1.   

    replace可以,
    不过,好像不需要改成两个\\吧
      

  2.   

    不需要变换,直接从编辑框中获取字符串,用AfxMessageBox()函数输出看看不就全清楚了!
      

  3.   

    用Cstring传递变量不需要转换,
      

  4.   

    不需要改阿
    一定要改就replace("\\","\\\\");
      

  5.   

    虽然结论都是“不需要转换”,怎么说法有真么多不同啊?
    双反斜杠其实只是给编译器看的,就比如这样一个字符串"\n\\",编译器编译的时候,看到第一个\并不知含义,当读到n的时候,知道是一个换行,就直接在编译的时刻,将\n这两个字节的东西替换成了一个字节的十六进制的0A,同样的\\也是在编译时刻就被直接替换成了\,也就是一个字节的5C。
    这一点你可以在编译完成后的exe里面用ultra-edit打开进行证实,比如写一句const char* p = "这是测试用的\\\n",编译完成以后,用ultra-edit查找“这是测试用的”,找到后看看后面两个字节是不是5C 0A。
    正是因为"\\"这类的转译字符只是给编译器看的,所以内存里面实际上也是不存在“双反斜杠”的,编辑框取到"d:\asd.txt",而这个就是内存中本应该存放的格式,不需要转换。
    (printf或者scanf里面的"%%"例外,这个不是给编译器看的,而是这两个函数自己做的转换)
      

  6.   


    顶! \是转义字符,是为了让后面的字转义
    为什么要\n  \\  \t \r  是因为要让编译器知道这不是字符n ,t,r , 而是 其他的东西 
    另外保存到变量里的“d:\\asd.txt”其实就是“d:\asd.txt”