由于用到路径,但是VC不认识F:\xx\awer\soft,所以需要将F:\xx\awer\soft转化成F:\\xx\\awer\\soft,写了如下代码,但是老是出错,请各位高手帮帮忙,看看哪里的问题;出错提示是E:\c语言学习\练习\readwrite\readwriteDlg.cpp(233) : error C2001: newline in constant
E:\c语言学习\练习\readwrite\readwriteDlg.cpp(234) : error C2146: syntax error : missing ')' before identifier 'm_strCopy'
E:\c语言学习\练习\readwrite\readwriteDlg.cpp(234) : error C2001: newline in constant
E:\c语言学习\练习\readwrite\readwriteDlg.cpp(235) : error C2001: newline in constant
E:\c语言学习\练习\readwrite\readwriteDlg.cpp(236) : error C2143: syntax error : missing ')' before '}'
E:\c语言学习\练习\readwrite\readwriteDlg.cpp(236) : error C2143: syntax error : missing ')' before '}'
执行 cl.exe 时出错.readwriteDlg.obj - 1 error(s), 0 warning(s)
CString m_strCopy;//已经有值
int n=0;
while(n<=m_strCopy.GetLength())
{
n=m_strCopy.Find("\");
m_strCopy.Insert("\",n);
n=m_strCopy.Find("\",n);
}

解决方案 »

  1.   

    CString m_strCopy;//已经有值 
    int n=0; 
    while(n <=m_strCopy.GetLength()) 

    n=m_strCopy.Find("\");        //233
    m_strCopy.Insert("\",n);      //234
    n=m_strCopy.Find("\",n);      //235
    }                             //236
      

  2.   

    CString m_strCopy;//已经有值 
    如果这个值里面已经有了\,那就不需要再转换了。\\只是hardcode时用到的。
      

  3.   

        CString str;
        str = "F:\xx\awer\soft";
        str.Replace("\\","\/");
        最后,str的内容会变成F:/xx/awer/soft这个路径可以识别,用Replace函数即可
      

  4.   

    n=m_strCopy.Find("\\");        //233
    m_strCopy.Insert("\\",n);      //234
    n=m_strCopy.Find("\\",n);      //235 
      

  5.   

    CString m_strCopy;//已经有值 
    int n=0; 
    for(n=0; n<m_strCopy.GetLength() ; n++) 

      TCHAR str = m_strCopy[n];
      if(str == '\\')
      {
         m_strCopy.Insert("\",n); 
         n++;
      }  
    }
    你试试!
      

  6.   

    如果你确定要查找\的话应该是 .Find('\\');或.Find("\\");
      

  7.   

    内存中的路径值不需要转义。
    转义只在写代码时需要,比如
    n=m_strCopy.Find("\\");        //233
                      此处就需要转义,要表示'\',由于\是转义字符,所以要写两个\\
      

  8.   

    CString m_strCopy;//已经有值 已经有值,MessageBox或者AfxMessageBox输出看看路径是否正确,如果正确就不用把\替换成\\了
      

  9.   

    xfrunning:有一个警告warning C4129: '/' : unrecognized character escape sequencejingzhongrong:如果这样,那Insert中该怎么写?如果添上转意字符‘\’,就会报错
      

  10.   

    liuyi820729:TCHAR str = m_strCopy[n]; 能这样将CString类型的对象写成数组吗?请多多指教
      

  11.   

    嗯!CString重写了[]符号函数!使用时返回的是索引所对应的字符。
      

  12.   

    报什么错?CString m_strCopy = "C:\\abc\\abc.txt";     内存中的值为C:\abc\abc.txt             n=m_strCopy.Find("\");        //233
                    这样写,由于\是转义,也即 '\"' 表示的是一个字符,即'"',
                    那么"\"便是一个不完整的字符串,所以会报错,
      

  13.   


    我是不是应该这样改:
    n=m_strCopy.Find("\\");        
    m_strCopy.Insert("\\\",n);     
    n=m_strCopy.Find("\\",n);    就是在运行的时候,不能打开转换后的目录文件   
      

  14.   


    m_strCopy.Insert("\\\",n);    \是转义
    '\\' 表示 '\'
    '\"' 表示 '"'
    又是一个不完整的字符串
      

  15.   

    C++在语法上已经定义了一些关键符号的含义,比如说\就是转译符,'描述一个字符范围,"描述一个字符串的范围之类的。所以如果在字符串要用到这些符号本身的含义就必须在前面加上转译符\来描述。如果我现在要用到一个字符是("Hello World!"),在C++中的描述就应该是\"Hello World!\"