在CString中有Find(),Delete(),Left(),Right(),Mid()就可以实现分离子串的目的了。
intFind( TCHAR ch ) const;
找到给定的字符返回它在字符串中对应的索引号;没有找到就返回-1。
intDelete( int nIndex, int nCount = 1);
返回值是被删除前的字符串的长度,nIndex是第一个被删除的字符索引,nCount是一次删除几个字符。当nCount过大,没有足够的字符删除时,此函数不执行。
CStringLeft( int nCount ) const;
返回的字符串是前nCount个字符。
CStringMid( int nFirst ) const;
CStringMid( int nFirst, int nCount ) const;
nCount代表要提取的字符数, nFirst代表要提取的开始索引位置
CStringRight( int nCount ) const;
返回的字符串是后nCount个字符。
简例:
CStringstr(”MyNameIsRenZheng”);
CStringstr1, str2, str3;
intx,y;
x=str.Find(_T("N")); //2
y=str.Delete(0,5); // 16
str1 =str.Left(3); // MyN
str2 =str.Mid(11, 4); //Zhen。注意,第二个参数是代表子串的长度
str3 =str.Right(3); // eng
假使有CString str=_T("My name is Ren Zheng");
按空格提取子串可以采用如下方法:
CStringstr=_T("My name is Ren Zheng");
CArray<CString,CString>strArray; //定义一个CString类型的动态数组,用来存取CString类型对象。
while(str.Find(_T(" "))+1)//当找不到空格时返回-1,所以这里我用它返回值加1来循环
{
strArray.Add(str.Left(str.Find(_T(“”))));//找到空格的索引,截取空格左边的字符串,并将它添加到strArray动态数组中。
str.Delete(0,str1. GetLength_r()+1);//返回删除空格和其左边的字符串的得到的新字符串。
}
strArray.Add(str);//最后加上经过最终删除后剩下的字符串;
这样按空格分离出的子串就都存储在动态CString类型的数组对象strArray中去了,现在就可以用strArray. Get_r(i)来得到每个子串;