第9章MFC通用类
第9章 MFC通用类
MFC类库除了提供封装 Windows界面元素对象的类, 如CWnd、 CMenu、 CDialog等,还提供了一些通用的类。 本章主要叙述字符串类、日期时间类和集合类的使用及 主要成员函数,最后结合实例,说明使用该类的方法和 技巧
MFC类库除了提供封装Windows界面元素对象的类, 如CWnd、CMenu、CDialog等,还提供了一些通用的类。 本章主要叙述字符串类、日期时间类和集合类的使用及 主要成员函数,最后结合实例,说明使用该类的方法和 技巧
91字符串类 Cstring 1.刨建 CString类对象 CString类构造函数的版本很多,它们的函数原型如下 CString();∥构造空字符串 CString( const CString& stringS);∥拷贝已有字符串内容 构造新的字符串 CString( TCHAR ch, int nRepeat =1) 用重复的字符构造新的字符串,字符由参数ch表明,重 复次数由 rEpeati决定
9.1 字符串类-Cstring 1.创建CString类对象 CString类构造函数的版本很多,它们的函数原型如下: CString( ); //构造空字符串 CString( const CString& stringSrc ); //拷贝已有字符串内容 ,构造新的字符串 CString( TCHAR ch, int nRepeat = 1 ); //用重复的字符构造新的字符串,字符由参数ch表明,重 复次数由nRepeat决定
CString( LPCTSTR lpch, int nLength ∥拷贝字符数组的内容构造字符串,lpch为指向数组的 指针, nLength为数组长度 CString( const unsigned char* psz 拷贝以"0结尾的字符串内容,构造新的字符串,psz 为指向字符串的指针 CString( LPCWSTR lpsz CString( LPCStR lpsz ∥拷贝 lpsz指定字符串内容构造 Unicode字符串
CString( LPCTSTR lpch, int nLength ); //拷贝字符数组的内容构造字符串,lpch为指向数组的 指针,nLength为数组长度 CString( const unsigned char* psz ); //拷贝以'\0'结尾的字符串内容,构造新的字符串,psz 为指向字符串的指针 CString( LPCWSTR lpsz ); CString( LPCSTR lpsz ); //拷贝lpsz指定字符串内容构造Unicode字符串
2.有关数组属性的成员函数和操作符 (1) int GetLength()const 函数返回字符串对象中的字符数,不包括最后的(03 (2) BOOL IsEmpty()const 函数判断字符串对象是否为空,即包含的字符数为0。如 果为空,返回值为TRUE,否则,返回值为 FALSE。 (3) void Empty() 函数强制清空字符串对象,使其包含的字符数为0。清空 字符串对象后,调用 Getlength函数的返回值为0
2.有关数组属性的成员函数和操作符 (1)int GetLength( ) const; 函数返回字符串对象中的字符数,不包括最后的\‘0’ 。 (2)BOOL IsEmpty( ) const; 函数判断字符串对象是否为空,即包含的字符数为0。如 果为空,返回值为TRUE,否则,返回值为FALSE。 (3)void Empty( ); 函数强制清空字符串对象,使其包含的字符数为0。清空 字符串对象后,调用GetLength函数的返回值为0
4) TCHAR GetAt( int nIndex )const 函数返回字符串对象中由 nIndex索引值指定单个字符,索 引以0为基础,第一个字符对应的索引值为0。 nIndex的值必 须大于或等于0,小于字符串中字符的总数,在MFC调试版 本中,程序将检测 nIndex是否为合法值,而在 Release版本中 ,将不进行检测 (5)operator LPCTSTR (const 操作符返回一个指向包含在 CString类对象中的以“0′ 结尾的字符串的 const char*指针,返回的指针是只读的,不 能对其进行修改
(4)TCHAR GetAt( int nIndex ) const; 函数返回字符串对象中由nIndex索引值指定单个字符,索 引以0为基础,第一个字符对应的索引值为0。nIndex的值必 须大于或等于0,小于字符串中字符的总数,在MFC调试版 本中,程序将检测nIndex是否为合法值,而在Release版本中 ,将不进行检测。 (5)operator LPCTSTR ( ) const; 操作符返回一个指向包含在CString类对象中的以‘\0’ 结尾的字符串的const char *指针,返回的指针是只读的,不 能对其进行修改
3. CString类的表达式 CString类重载了“=”、“+”、“+=”三个运算符,以 实现字符串之间的赋值和串联运算。 4.比较类函数及操作符 1)比较操作符 CString 类重载了“==”、“!=”、“>”、“= “<=操作符,以实现对字符串的比较操作,可以进行字 符串对象之间、字符串对象和 LPCTSTR字符串、字符串对 象和字符指针之间的比较,比较操作是大小写敏感的。 (2) int Compare( LPCtStR lpsz)const 将字符串类对象与1psz比较,如果相等,返回值为0;如 果比1psz大,返回值大于0;如果比lpsz小,返回值小于0
3.CString类的表达式 CString类重载了“=” 、 “+”、 “+=”三个运算符,以 实现字符串之间的赋值和串联运算。 4.比较类函数及操作符 (1)比较操作符 CString类重载了“==” 、 “!=” 、 “>” 、 “=” 、 “<=”操作符,以实现对字符串的比较操作,可以进行字 符串对象之间、字符串对象和LPCTSTR字符串、字符串对 象和字符指针之间的比较,比较操作是大小写敏感的。 (2)int Compare( LPCTSTR lpsz ) const; 将字符串类对象与lpsz比较,如果相等,返回值为0;如 果比lpsz大,返回值大于0;如果比lpsz小,返回值小于0
5.字符串截取类函数 (1) CString Left( int n Count)const Left函数提取字符串对象最开始(左侧)的若干字符, 将所提取子串的拷贝作为返回值。截取字符的数量由参数 n Count决定,当 n Count大于字符串长度时,整个字符串被提 取。操作后,原始字符串未发生变化。 (2)CString Right( int nCount)const 与Let函数调用类似, Righti函数调用提取字符串右侧( 末尾)的若干字符 (3)CString Mid( int n First)const CString Mid( int nFirst, int nCount)const; Mid函数调用从字符串对象中间开始提取子串,开始位置 由 nFirst参数指定,提取字符数由参数 n Count指定,当省略 参数 n Count,表示从 nfirst开始,提取余下的所有字符。 CString sI("abcdef) CString S2=S Mid( 2,3):/ 2="cde
5.字符串截取类函数 (1)CString Left( int nCount ) const; Left函数提取字符串对象最开始(左侧)的若干字符, 将所提取子串的拷贝作为返回值。截取字符的数量由参数 nCount决定,当nCount大于字符串长度时,整个字符串被提 取。操作后,原始字符串未发生变化。 (2)CString Right( int nCount ) const; 与Left函数调用类似,Right函数调用提取字符串右侧( 末尾)的若干字符。 (3)CString Mid( int nFirst ) const; CString Mid( int nFirst, int nCount ) const; Mid函数调用从字符串对象中间开始提取子串,开始位置 由nFirst参数指定,提取字符数由参数nCount指定,当省略 参数nCount,表示从nFirst开始,提取余下的所有字符。 CString s1( "abcdef" ); CString s2= s.Mid( 2,3 ); // s2= "cde
6.转换函数 (1) void Make Upper( 将字符串中的所有小写字母转换为大写。 (2) void MakeLower( 将字符串中的所有大写字母转换为小写。 (3) void MakeReverse() 反转字符串对象中所有字符的排列顺序 (4) int Replace( TChar chold, TCHAR chNew int Replace( LPCtstr lpszold, LPCTSTR lpszNew (5) int Insert( int nIndex, TCHAR ch) int Insert( int nIndex, LPCTSTR pstr 函数从指定的位置,插入一个字符或字符串,插入位置由 nIndex参数指定,插入内容由ch或pstr指定,返回值为插入后新 字符串的长度
6.转换函数 (1)void MakeUpper( ); 将字符串中的所有小写字母转换为大写。 (2)void MakeLower( ); 将字符串中的所有大写字母转换为小写。 (3)void MakeReverse( ); 反转字符串对象中所有字符的排列顺序。 (4)int Replace( TCHAR chOld, TCHAR chNew ); int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew ); (5)int Insert( int nIndex, TCHAR ch ) int Insert( int nIndex, LPCTSTR pstr ) 函数从指定的位置,插入一个字符或字符串,插入位置由 nIndex参数指定,插入内容由ch或pstr指定,返回值为插入后新 字符串的长度
(6) int CString: Remove( TCHaR ch) 函数清除字符串对象中由ch指定的所有字符,返回值为删 除的总字符数,如果没有匹配的字符,返回值为0。字符 匹配是大小写敏感的。 (7) int Delete( int nIndex, int n Count=1) 函数删除字符串中连续的若干字符,删除的起始位置由 nIndex参数决定,删除的字符数由参数 n Count决定,如果 n Count于从 nIndex开始余下的字符数,则余下的所有字 符被删除。返回值为删除部分字符后字符串的长度
(6)int CString::Remove( TCHAR ch ); 函数清除字符串对象中由ch指定的所有字符,返回值为删 除的总字符数,如果没有匹配的字符,返回值为0。字符 匹配是大小写敏感的。 (7)int Delete( int nIndex, int nCount = 1 ) 函数删除字符串中连续的若干字符,删除的起始位置由 nIndex参数决定,删除的字符数由参数nCount决定,如果 nCount大于从nIndex开始余下的字符数,则余下的所有字 符被删除。返回值为删除部分字符后字符串的长度