CString
CString没有基类。 一个CString对象由可变长度的一队字符组成 CString对象还具有下列特征:
- CString可作为连接操作的结果而增大。
- CString对象遵循“值语义”。应将CString看作是一个真实的字符串而不是指向字符串的指针。
- 你可以使用CString对象任意替换const char*和LPCTSTR函数参数。
- 转换操作符使得直接访问该字符串的字符就像访问一个只读字符(C-风格的字符)数组一样。
#include <afxwin.h>
构造函数
CString( ); // 创建一个空字符串对象
CString( const CString& stringSrc ); // 拷贝一个已知CString对象
CString( TCHAR ch, int nRepeat = 1 ); // 创建一个重复nRepeat次的ch字符
CString( LPCTSTR lpch, int nLength ); // 将字符数组转化为CString对象
CString( const unsigned char* psz ); // 从一个指向unsigned char的指针构造一个CString。
CString( LPCWSTR lpsz ); // 从一个ANSI字符串构造一个Unicode CString。你可以象下面的例子那样用这个函数来加载一个字符串资源。
CString( LPCSTR lpsz ); // 从一个Unicode字符串构造一个CString。- stringSrc:一个已经存在的CString对象,它要被拷贝到此CString对象中。
- ch:要被重复nRepeat次的单个字符。
- nRepeat:要对ch重复的次数。
- lpch:一个指向字符数组的指针,该字符数组的长度是nLength,不包括结尾的空字符。
- nLength:pch中的字符的个数。
- psz:一个要被拷贝到此CString对象中去的以空字符结尾的字符串。
- lpsz:一个要被拷贝到此CString对象中去的以空字符结尾的字符串。
// CString::CString示例:
CString s1; // 空字符串
CString s2( "cat" ); // 从一个文字的C字符串
CString s3 = s2; // 拷贝构造函数
CString s4( s2 + " " + s3 ); // 从一个字符串表达式
CString s5( 'x' ); // s5 = "x"
CString s6( 'x', 6 ); // s6 = "xxxxxx"
CString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"
CString city = "Philadelphia"; // 不是赋值操作符操作符重载
operator []
返回在给定位置的字符--它是代替GetAt的操作符
operator =
给CString对象赋一个新值
CString stroperator +
连接两个字符串并返回一个新字符串
operator +=
把一个新字符串连接到一个已经存在的字符串的末端
operator <<
operator >>
operator LPCTSTR
operator 比较操作符
这些比较操作符用来比较两个字符串。它们是区分大小写的Compare成员函数的方便的代用符。
BOOL operator ==( const CString& s1, const CString& s2 );
BOOL operator ==( const CString& s1, LPCTSTR s2 );
BOOL operator ==( LPCTSTR s1, const CString& s2 );
BOOL operator !=( const CString& s1, const CString& s2 );
BOOL operator !=( const CString& s1, LPCTSTR s2 );
BOOL operator !=( LPCTSTR s1, const CString& s2 );
BOOL operator < ( const CString& s1, const CString& s2 );
BOOL operator < ( const CString& s1, LPCTSTR s2 );
BOOL operator < ( LPCTSTR s1, const CString& s2 );
BOOL operator > ( const CString& s1, const CString& s2 );
BOOL operator > ( const CString& s1, LPCTSTR s2 );
BOOL operator > ( LPCTSTR s1, const CString& s2 );
BOOL operator <=( const CString& s1, const CString& s2 );
BOOL operator <=( const CString& s1, LPCTSTR s2 );
BOOL operator <=( LPCTSTR s1, const CString& s2 );
BOOL operator >=( const CString& s1, const CString& s2 );
BOOL operator >=( const CString& s1, LPCTSTR s2 );
BOOL operator >=( LPCTSTR s1, const CString& s2 );参数:
- s1, s2:要比较的CString对象。
返回值:如果字符串满足比较条件则返回非零值;否则返回0。
示例: CString比较操作符示例:
CString s1( "abc" );
CString s2( "abd" );
ASSERT( s1 < s2 ); // Operator is overloaded for both.
ASSERT( "ABC" < s1 ); // CString and char*
ASSERT( s2 > "abe" );函数
GetLength()
此成员函数用来获取这个CString对象中的字节计数。这个计数不包括结尾的空字符。 对于多字节字符集(MBCS),GetLength按每一个8位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。
int GetLength() const;返回值:返回字符串中的字节计数。
CString s( "abcdef" );
int length = s.GetLength();IsEmpty()
此成员函数用来测试一个CString对象是否是空的。
BOOL IsEmpty( ) const;返回值:如果CString对象的长度为0,则返回非零值;否则返回0。
Empty()
此成员函数用来使CString对象成为一个空字符串,并释放相应的内存。
void Empty( );GetAt()
你可以把一个CString对象看作是一个字符数组。GetAt成员函数返回一个由一个索引号指定的单个字符。重载的下标([])是GetAt常用的代用符。
TCHAR GetAt( int nIndex ) const;参数:
- nIndex:CString对象中的某个字符的从零开始的索引。nIndex参数必须大于或等于0,并小于GetLength函数的返回值。
返回值:返回一个包含字nIndex CString对象中的某个字符的从零开始的索引。
SetAt()
你可以将一个CString对象看作是一个字符数组。SetAt成员函数重写由一个索引值指定的单个字符。如果索引超出了已有字符串的边界,SetAt不会扩大这个字符串。
void SetAt( int nIndex, TCHAR ch );- nIndex:CString 对象中的某个字符的从零开始的索引。nIndex参数必须大于或等于0,小于由Getlength的返回的值。Microsoft基础类库的测试版本将检验nIndex的边界,而Release版本则不检验。
- ch:要插入的字符。
Compare
此成员函数通过使用通用文本函数_tcscmp来比较这个CString对象和另一个字符串
int Compare( LPCTSTR lpsz ) const;参数:
- lpsz:要用于比较的另一个字符串。
返回值:如果字符串是一样的则返回非零值;如果CString对象小于lpsz则返回值<0,如果CString对象大于lpsz则返回值>0。
CompareNoCase
此成员函数通过使用通用文本函数_tcsicmp来比较这个CString对象和另一个字符串,不区分大小写
int CompareNoCase( LPCTSTR lpsz ) const;参数:
- lpsz:要用于比较的另一个字符串。
返回值:如果字符串是一样的(不区分大小写)则返回非零值;如果CString对象小于lpsz(不区分大小写)则返回值<0,如果CString对象大于lpsz(不区分大小写)则返回值>0。
Collate
此成员函数通过使用通用文本函数_tcscoll来比较这个CString对象和另一个字符串。
int Collate( LPCTSTR lpsz ) const;参数:
- lpsz:要用于比较的另一个字符串。
返回值:如果两个字符串是一样的,则返回非零值;如果CString对象小于lpsz则返回值<0;如果此CString对象大于lpsz则返回值>0。
CollateNocase
此成员函数通过使用通用文本函数_tcscoll来比较这个CString对象和另一个字符串。不区分大小写
int CollateNocase( LPCTSTR lpsz ) const;参数:
- lpsz:要用于比较的另一个字符串。
返回值:如果两个字符串是一样的,则返回非零值;如果CString对象小于lpsz则返回值<0;如果此CString对象大于lpsz则返回值>0。
