int nPos;
#ifdef _DEBUG//在调试状态 \debug\*.exe 相当于去掉了"\debug"
nPos = m_filename.ReverseFind ('\\');//搜索最后一个'\'字符的位置
CString sPath = m_filename.Right (nPos);//保留最后一个'\'字符的左侧串(不包括'\')
#endif
nPos = m_filename.ReverseFind('\\');//只保留 "\xx.exe"
sPath = m_filename.Right(nPos); AfxMessageBox(sPath);return;
错在哪里呢.显示xe,而应该是abc.exe
#ifdef _DEBUG//在调试状态 \debug\*.exe 相当于去掉了"\debug"
nPos = m_filename.ReverseFind ('\\');//搜索最后一个'\'字符的位置
CString sPath = m_filename.Right (nPos);//保留最后一个'\'字符的左侧串(不包括'\')
#endif
nPos = m_filename.ReverseFind('\\');//只保留 "\xx.exe"
sPath = m_filename.Right(nPos); AfxMessageBox(sPath);return;
错在哪里呢.显示xe,而应该是abc.exe
char chExtName[_MAX_EXT] ;
char szDriveName[_MAX_DRIVE];
char szDirName[_MAX_DIR];
char szFileName[_MAX_FNAME];
char szExt[_MAX_EXT];
char chDriveName[_MAX_DRIVE+1];
char chDescription[32];
memset(chDescription,0,32);
_tsplitpath(chFileName,szDriveName,szDirName,szFileName,szExt);
strcpy(chFileFullName,szFileName);
strcat(chFileFullName,szExt);
CString sPath = m_filename.Right (nPos);
即可了,你后边的代码没用。
CString s = "abcdefghijk";
int nPos = s.ReverseFind('i');猜猜nPos 的值等于多少?
(A) 2 (B) 3 (C) 8 (D) 9 (E) 10正确答案是C: 8, 它是从开头开始算起的,0,1,2,3...因此,楼主的改正方法是: #ifdef _DEBUG//在调试状态 \debug\*.exe 相当于去掉了"\debug"
nPos = m_filename.ReverseFind ('\\');//搜索最后一个'\'字符的位置
CString sPath = m_filename.Right (m_filename.GetLength() -nPos - 1);
#endif
nPos = m_filename.ReverseFind('\\');
sPath = m_filename.Right(m_filename.GetLength() -nPos);
http://www.codeproject.com/file/cpath.asp