本人由于程序需要把D:\TEST\TEST1.MDB的路径改为D:\\TEST\\TEST1.MDB,需要一个函数专门负责这类转换,
BOOL CBackUpDateBaseDlg::FormatChange(string* path)
{
  try
  {
  for(string::iterator beg=path->begin();beg!=path->end();++beg)
  {
  if(*beg=='\\')
  {
  beg=path->insert(beg,'\\');
  ++beg;
  }
  }
  return TRUE;
  }
  catch (CException* e)
  {
  ::MessageBox(NULL,   (LPCTSTR)e.Description(), "转换名称出错!", MB_OK);
  return FASLE;
  }
}
但是发现string不能再VC中作为函数的参数,请问还有什么方法达到此目的?

解决方案 »

  1.   

    如果只是把\换成\\没有必要那么麻烦
    CString str = "D:\\TEST\\TEST1.MDB";
    str.Replace("\\","\\\\");就行了
      

  2.   

    这是我的一个处理 char * 类型的静态库//引用库
    #include "vblib.h"
    #pragma comment(lib,"VBString.lib")//建议将 VBString.h 和 VBStringFunction.h 添加进工程中,这样便可通过 . 查看到 VBString 类的相关方法//定义变量
    VBString tmpString;tmpString = "[原文]";
    tmpString &= "[累加]";
    tmpString += "[开头]";
    tmpString &= "[再累加]";
    //*tmpString 等同于 tmpString.value
    MessageBox(0,*tmpString,"提示",64);
    MessageBox(0,tmpString.value,"提示",64);//分割数组的处理
    tmpString.Split("][",0);
    for(int i=0;i<tmpString.Count; i++){
    MessageBox(0,*tmpString[i],"数组",64);
    }//替换文本
    tmpString.set_Replace("[","(",0,0);
    tmpString.set_Replace("]",")",0,0);
    MessageBox(0,*tmpString,"数组",64);//更过方法请参考 VBString.h 文件下载地址:
    http://download.csdn.net/source/2698340
      

  3.   

    一楼这个方法可以满足楼主的要求
    如果只是把\换成\\没有必要那么麻烦
    CString str = "D:\\TEST\\TEST1.MDB";
    str.Replace("\\","\\\\");就行了
      

  4.   

    实现方法很对,任选其二:
    1.把从其他函数中取到的路径D:\TEST\TEST1.MDB放CString 变量里:
       然后用1楼的方法
       str.Replace("\\","\\\\");就行了
    2.如果获取的是LPSTR 串,可以用如下方法实现:   TCHAR szDesPath[MAX_PATH]={0,},szScrpath[]="D:\\TEST\\TEST1.MDB";
    TCHAR *pszDes,*pszSrc;

    for (pszDes=szDesPath,pszSrc=szScrpath;*pszSrc;)
    {
    if ( *pszSrc == '\\')
    {
    strcat(pszDes,"\\\\");
    pszDes +=2;
    pszSrc++;
    }
    else
    *pszDes++ = *pszSrc++;
    } *pszDes = 0;