INI文件内容:
[photo]
ddrlj=D:\\pic\\
***************************
CString m_ddrPath;
....
....
::GetPrivateProfileString("photo","ddrlj",NULL,m_ddrPath.GetBuffer(128),128,".\\sdcs_storage.ini");
SetDlgItemText(IDC_STATIC_DDR,m_ddrPath);
为什么得到的还是:D:\\pic\\,而不是D:\pic\?
请问怎样转化成CString?

解决方案 »

  1.   

    ddrlj=D:\\pic\\
    他读进去就是ddrlj=D:\\\\pic\\\\
    你直接写成
    ddrlj=D:\pic\
      

  2.   

    GetPrivateProfileString在取路径字符串时已经对"\"做过处理了,无须你再用"\"转义
      

  3.   

    樓主理解錯了。
    在字符串或字符中才轉化特殊字符。例如:
    CString m_ddrPath="D:\\pic\\";
    SetDlgItemText(IDC_STATIC_DDR,m_ddrPath);
    這時在文本中寫的才是D:\pic\樓主的程序中如果ini文件裡應該是D:\pic\
    執行::GetPrivateProfileString("photo","ddrlj",NULL,m_ddrPath.GetBuffer(128),128,".\\sdcs_storage.ini");
    後會  m_ddrPath="D:\\Pic\\";  其實"D:\\Pic\\"就是D:\Pic\ ,只是字符串將\做轉義字符處理,所以表示'\'時用'\\'
      

  4.   

    程序是这样的:
    void CDoPicDlg::OnTimer(UINT nIDEvent)
    {
    // CString pth;
    // pth="D:\\pic\\";
    //       ListFolder(pth);  //这样就能正常运行
    ListFolder(m_ddrPath);   // 这样就运行不了
    }void CDoPicDlg::ListFolder(CString sPath)
    {
      CFileFind ff;
      BOOL bFound;
      bFound = ff.FindFile(sPath + "\\*.JPG");//找第一个文件
      while(bFound)//如果找到,继续
      {
        bFound = ff.FindNextFile();
        CString sFilePath = ff.GetFilePath();    if(ff.IsDirectory())//如果是目录,注意任何一个目录都包括.和..目录
    {
          if(!ff.IsDots())//去除.和..目录
            ListFolder(sFilePath);//递归下一层目录
    }  else  {
    //    存储图片,这个函数是正常的
    SaveToDB(sFilePath);
    }
      }
      ff.Close();
    }
      

  5.   

    INI文件内容:
    [photo]
    ddrlj=D:\\pic\\
    ********************
    改成=========>>>>>>>>>
    [photo]
    ddrlj=D:\pic\
    ********************
      

  6.   

    程序是这样的:::GetPrivateProfileString("photo","ddrlj",NULL,m_ddrPath.GetBuffer(128),128,".\\sdcs_storage.ini");   //得到  m_ddrPath的值ini文件中的D:\pic\void CDoPicDlg::OnTimer(UINT nIDEvent)
    {
    //  ******* 大家请注意这里  *******
    // CString pth;
    // pth="D:\\pic\\";
    //       ListFolder(pth);  //注释这样就能正常运行
    ListFolder(m_ddrPath);   // 这样就运行不了
    }void CDoPicDlg::ListFolder(CString sPath)
    {
      CFileFind ff;
      BOOL bFound;
      bFound = ff.FindFile(sPath + "\\*.JPG");//找第一个文件
      while(bFound)//如果找到,继续
      {
        bFound = ff.FindNextFile();
        CString sFilePath = ff.GetFilePath();    if(ff.IsDirectory())//如果是目录,注意任何一个目录都包括.和..目录
    {
          if(!ff.IsDots())//去除.和..目录
            ListFolder(sFilePath);//递归下一层目录
    }  else  {
    //    存储图片,这个函数是正常的
    SaveToDB(sFilePath);
    }
      }
      ff.Close();
    }
    怎么解决呀
      

  7.   

    ini文件已经改成:
    [photo]
    ddrlj=D:\pic\
    **************************
    ::GetPrivateProfileString("photo","ddrlj",NULL,m_ddrPath.GetBuffer(128),128,".\\sdcs_storage.ini");
    得到的m_ddrPath和m_ddrPath="D:\\pic\\";有什么区别?着急呀,急呀!