在vc里面我从界面得到文件路径是filename="d:\vc\des\m1.txt";请问我该怎么把它变成filename="d:\\vc\\des\\m1.txt";的形式呢?知道的请付上你的代码好吗,不知道具体的实现的请告诉我该用String类的一些什么函数??谢谢大家的帮助?

解决方案 »

  1.   

    CString filename="d:\vc\des\m1.txt";
    filename.Replace("\", "\\");
      

  2.   

    CString filename="d:\vc\des\m1.txt";
    filename.Replace("\", "\\");
     byry(pepsi) ( ) 已经答了,HEHE
      

  3.   

    我不知道楼上的朋友给出答案前调试了没有
    CString filename="d:\vc\des\m1.txt";
    filename.Replace("\", "\\");
    这两句没有一句能编译通过在文件路径中加"\"主要的原因是c/c++中用""来表达一个字符串时, "\"这个字符后面加一些特定的字符会形成一个转义字符。 比如\n,用此类转义符赋值后字符串中相应位置的实际字符就会被\n表示的换行字符所替代。c/c++中对路径的字符串并没有特殊的要求, 我感觉你的理解是必须有两个\\,其实这也算是一个转义字符,因为如果在一个""表示的字符串中如果只有一个\编译器会连同\后面的字符翻译为一个字符,这里加两个\\就是为了让编译器把这两个\\翻译成一个\字符
    比如 
    char szbuf[] = "c:\\test\\test.cpp";
    赋值后你去debug看szbuf的实际值 是c:\test\test.cpp
    所以如果你从界面得到了文件路径, 并且这个路径在字符串中是标准的形式(比如上面的c:\test\test.cpp)那么什么改动也不需要了. 再罗嗦一遍, c/c++中并不需要特殊的路径表示法, 主要因为\在字符串中是一个转义符, 不能独立的表示一个字符, 所以要用\\来表示一个
      

  4.   

    up
    楼主要学会用memory和watch窗口啊
    在view->debug windows下
      

  5.   

    界面输入'\'就代表字符'\',只有在编程时才用'\\'代表字符'\'
    按理说不需要替换,如果一定要替换的话,如下:
    CString filename;
    filename.Replace("\\", "\\\\");
      

  6.   

    char exeFullPath[MAX_PATH];
        GetModuleFileName(NULL,exeFullPath,MAX_PATH);//获得本程序所在的目录及程序名
    char temp[MAX_PATH];
    int n=0,i=0;
    while(1)
    {
    if(exeFullPath[i]!=92)
       temp[n]=exeFullPath[i];
    else
    {
    temp[n]=92;
    temp[n+1]=92;
    ++n;
    }
    i++;
    n++;
    if(exeFullPath[i]=='\n')
    break;
    if(i>=MAX_PATH)
    break;
    }
    AfxMessageBox(temp);
      

  7.   

    CString filename;
    filename.Replace("\\", "\\\\");Support