(转)CString截取字符串全攻略
附:去掉空格方法
CString str("e w r we 中华ADF 华AG中");
newstr=str.Replace(" ", "");//第一个参数是空格,第二个参数是空字符串。
int i_find=str.Find(newstr.Left(1));
双字节:
CString str(L"e w r we 中华ADF 华AG中");
str.Remove(L' '); //str = L"ewrwe中华ADF华AG中"
我已经在EVC下测试通过,没有错误.
例程1:(csdn)
文件xxxx.dll去掉后面的.dll
方法1、
char str[] = "xxxx.dll"
char*p;
p=strrchr(str, '.');
*p = 0;
方法2、
CString str="xxxx.dll";
int n = str.ReverseFind('.')
str = str.Left(str.GetLength()-n-1);
例程2:(csdn)
取得一个字符串中第一个 '?'号之前的字符
方法1
CString m_char,m_disp;
m_disp="jadfueiuajdf?";
m_char="?";
if (!m_char.IsEmpty())
{
int index = m_disp.Find(m_char);
m_disp = m_disp.Right(m_disp.GetLength()-index-1);
}
返回m_disp就行
方法2
CString temp=the.m_bb;
CString reslut=temp.Left(temp.Find("?")-1);
例程3:(csdn)
一个CString类对象m_StrReceiveModem={ATS0=2 OK $03#}
如何截取从$开始的字符串
方法1
CString m_StrReceiveModem;
int nPos = m_StrReceiveModem.Find('$');
if(nPos >= 0)
{
CString sSubStr = m_StrReceiveModem.Mid(nPos);//包含$,不想包含时nPos+1
}
方法2
CString m_StrReceiveModem;
int nPos = m_StrReceiveModem.Find('$');
if(nPos >= 0)
{
CString sSubStr = m_StrReceiveModem.Right(StrReceiveModem.GetLength()-nPos);
}
}
//截取“$”到“#”的字符串
int first,last;
first= m_StrReceiveModem.Find("$");
last= m_StrReceiveModem.Find("#");
CString sSubStr = m_StrReceiveModem.Mid(first,last);
例程4: (fox)
//根据路径解析出文件名
CString m_Filepath = "E:\\fox_work\\vc_experiment\\hello.txt"
int nPos = m_Filepath.Find('\\');
CString sSubStr = m_Filepath;
while (nPos)
{
sSubStr = sSubStr.Mid(nPos+1,sSubStr.GetLength()-nPos); //取'\'右边字符串
nPos = sSubStr.Find('\\'); //不包含'\',函数值返回-1
if (nPos==-1)
{
nPos = 0;
}
}
//最后sSubStr = "hello.txt"
注:CString::Find函数,如果给定的参数是一个字符串,那么它必须与此字符串中的某一个子字符串完全匹配才能返回相匹配的子字符串第一个字符的索引。
CString::Find