我要过滤一串字符串中的某段出来,但是出现了奇怪的问题。CString str = "C:\Documents and Settings\Administrator\桌面\1\复件 (2) 代_启芬\视频记录_2009-12-17 15-13-55\20120113103327.avi";
CString FileName = "视频记录_2009-12-17 15-13-55";
str=str.Right(str.GetLength()-str.Find(FileName+"\\")-(sizeof(FileName+"\\")-1));
通过这个代码过滤出来的不对,我是要截取出20120113103327.avi这个来,但是我用上面的代码截取出来的是下图
然后我把代码改成这样就是正确的CString str = "C:\Documents and Settings\Administrator\桌面\1\复件 (2) 代_启芬\视频记录_2009-12-17 15-13-55\20120113103327.avi";
CString FileName = "视频记录_2009-12-17 15-13-55";
str=str.Right(str.GetLength()-str.Find(FileName+"\\")-(sizeof("视频记录_2009-12-17 15-13-55\\")-1));
大家帮我看看是怎么回事

解决方案 »

  1.   

    问题解决了,马虎了,sizeof(FileName)这样只能是计算了CString这个类的长度,一直都是4,所以不能这样,这里应该改成FileName.GetLength();
    结贴,来个收分的
      

  2.   

    FileName.GetLength()可以获取长度
    字符串的话用strlen
      

  3.   

    CString str = "C:\Documents and Settings\Administrator\桌面\1\复件 (2) 代_启芬\视频记录_2009-12-17 15-13-55\20120113103327.avi";TCHAR* pszText = _tcsrchr(str, _T('\\')) + 1;
    AfxMessageBox(pszText);
      

  4.   

    哈哈,楼主怎么会弄个sizeof出来?
      

  5.   

    sizeof在编译期就固定了,怎么改字符串长度都不会变的
      

  6.   

    sizeof的用法,在这篇文章里,写的非常详细
    http://blog.csdn.net/liufei_learning/article/details/5088150