CString字符串查找和截取与去空格(Find,FindOneOf,ReverseFind,Left,Mid,Right,substr,TrimLeft和TrimRight)

一、CString之Find()、FindOneOf()、ReverseFind()。

此三个函数返回值均为整数int。

1、Find()

该函数从最左侧0位置开始索引,查找到第一个出现该字符的位置,返回position。示例如下:

CString s( "abcabc" );

ASSERT( s.Find( 'b' ) == 1 );

int  f = s.Find( "de" ) ;    // 结果 f = 3

返回值:

•如果查到,返回以0索引起始的位置

•未查到,返回-1

2、FindOneOf()

给定一个字符串,然后查找其中一个字符第一次出现的位置,示例如下:

CString s( "abcabc" );

int f = s.FindOneOf( "sb" ) ;  //结果f = 1

返回值:

•如果查到,返回以0索引起始的位置

•未查到,返回-1

3、ReverseFind()

该函数反向(从右向左)查找字符最后一次出现的位置。示例如下:

CString s( "abcabc" );

int f = s.ReverseFind( "sb" ) ;  //结果f = 4

返回值:

•如果查到,返回以0索引起始的位置

•未查到,返回-1

二、CString之Left()、Mid()、Right()、Substr(),remove()

查找完成后,我们可能需要截取字符串。CString有如下几个字符串截取函数。

1、Left(int nCount)

该函数截取左侧nCount个字符,如果遇到双字节字符(下面Mid和Right同样理解),比如中文,则可能会截断乱码。因为nCount是按照字节计数的。

2、Mid(int nFirst)和Mid( int nFirst, int nCount)

Mid(int nFirst)函数截取从nFirst开始,直到字符串结束的字符串。

Mid( int nFirst, int nCount)函数则截取从nFirst开始,截取nCount个字节字符。

3、Right(int nCount)

该函数截取右侧nCount个字节字符。

4、Substr(int pos,int len)

该函数截取从pos开始的len个字符,如果只有一个数字表示从下标为pos开始一直到结尾.

5、Remove()

主要用于删除文件,但是在CString中可以移除对应的字符

Left()、Mid()、Right()、Substr函数示例如下:

s="123456789";

s1=s.Left(3);   //123

s2=s.Mid(3);    //456789

s3=s.Right(3);  //789

s4_1=s.substr(5,3);   //678

s4_2=s.substr(4);   //56789

ss = "192.168.10.32"

s5 = ss.remove(".");  //1921681032

三. CString之TrimLeft()和TrimRight()

CString::TrimLeft /  TrimRight

void TrimLeft( );

void CString::TrimLeft( TCHAR chTarget );

void CString::TrimLeft( LPCTSTR lpszTargets );

参数:

chTarget

指定要清除的目标字符集合

lpszTargets

指向需要清除的目标字符集合的指针

说明:

这个成员函数的没有参数的版本用来将字符串最前面的空格修整掉。当在没有参数的情况下调用时,TrimLeft删除换行符,空格和tab字符。

这个成员函数的需要参数的版本用来将一个特定的字符或一群特定的字符从字符串的开始处删除。

TrimRight()这个方法可用于消除从右侧起所遇到的所有空格字符,同时也可用于消除目标字符集合中出现的任一字符,直到遇到第一个不属于目标字符串子集的字符为止。

注意:

这个函数并不是要清除从右边起所出现的完全匹配与目标字符集合的字符串,如:

CString  str = "cin.ini";

str.TrimRight(".ini");   //将所有 ‘ . '  ' i '  ' n '字符匹配

执行之后,str中的字符串为c,而不是cin

你可能感兴趣的:(C++,MFC)