Skip to content

CString

CString没有基类。 一个CString对象由可变长度的一队字符组成 CString对象还具有下列特征:

  • CString可作为连接操作的结果而增大。
  • CString对象遵循“值语义”。应将CString看作是一个真实的字符串而不是指向字符串的指针。
  • 你可以使用CString对象任意替换const char*和LPCTSTR函数参数。
  • 转换操作符使得直接访问该字符串的字符就像访问一个只读字符(C-风格的字符)数组一样。

#include <afxwin.h>

构造函数

c++
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对象中去的以空字符结尾的字符串。
c++
// 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对象赋一个新值

c++
CString str

operator +

连接两个字符串并返回一个新字符串

operator +=

把一个新字符串连接到一个已经存在的字符串的末端

operator <<

operator >>

operator LPCTSTR

operator 比较操作符

这些比较操作符用来比较两个字符串。它们是区分大小写的Compare成员函数的方便的代用符。

c++
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比较操作符示例:

c++
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位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。

c++
int GetLength() const;

返回值:返回字符串中的字节计数。

c++
CString s( "abcdef" );
int length = s.GetLength();

IsEmpty()

此成员函数用来测试一个CString对象是否是空的。

c++
BOOL IsEmpty( ) const;

返回值:如果CString对象的长度为0,则返回非零值;否则返回0。

Empty()

此成员函数用来使CString对象成为一个空字符串,并释放相应的内存。

c++
void Empty( );

GetAt()

你可以把一个CString对象看作是一个字符数组。GetAt成员函数返回一个由一个索引号指定的单个字符。重载的下标([])是GetAt常用的代用符。

c++
TCHAR GetAt( int nIndex ) const;

参数:

  • nIndex:CString对象中的某个字符的从零开始的索引。nIndex参数必须大于或等于0,并小于GetLength函数的返回值。

返回值:返回一个包含字nIndex CString对象中的某个字符的从零开始的索引。

SetAt()

你可以将一个CString对象看作是一个字符数组。SetAt成员函数重写由一个索引值指定的单个字符。如果索引超出了已有字符串的边界,SetAt不会扩大这个字符串。

c++
void SetAt( int nIndex, TCHAR ch );
  • nIndex:CString 对象中的某个字符的从零开始的索引。nIndex参数必须大于或等于0,小于由Getlength的返回的值。Microsoft基础类库的测试版本将检验nIndex的边界,而Release版本则不检验。
  • ch:要插入的字符。

Compare

此成员函数通过使用通用文本函数_tcscmp来比较这个CString对象和另一个字符串

c++
int Compare( LPCTSTR lpsz ) const;

参数:

  • lpsz:要用于比较的另一个字符串。

返回值:如果字符串是一样的则返回非零值;如果CString对象小于lpsz则返回值<0,如果CString对象大于lpsz则返回值>0。

CompareNoCase

此成员函数通过使用通用文本函数_tcsicmp来比较这个CString对象和另一个字符串,不区分大小写

c++
int CompareNoCase( LPCTSTR lpsz ) const;

参数:

  • lpsz:要用于比较的另一个字符串。

返回值:如果字符串是一样的(不区分大小写)则返回非零值;如果CString对象小于lpsz(不区分大小写)则返回值<0,如果CString对象大于lpsz(不区分大小写)则返回值>0。

Collate

此成员函数通过使用通用文本函数_tcscoll来比较这个CString对象和另一个字符串。

c++
int Collate( LPCTSTR lpsz ) const;

参数:

  • lpsz:要用于比较的另一个字符串。

返回值:如果两个字符串是一样的,则返回非零值;如果CString对象小于lpsz则返回值<0;如果此CString对象大于lpsz则返回值>0。

CollateNocase

此成员函数通过使用通用文本函数_tcscoll来比较这个CString对象和另一个字符串。不区分大小写

c++
int CollateNocase( LPCTSTR lpsz ) const;

参数:

  • lpsz:要用于比较的另一个字符串。

返回值:如果两个字符串是一样的,则返回非零值;如果CString对象小于lpsz则返回值<0;如果此CString对象大于lpsz则返回值>0。

Mid

Left

SpanIncluding

SpanExcluding

MakeUpper

MakeLower

MakeReverse

Replace

Remove

Insert

Delete

Format

FormatV

TrimLeft

TrimRight

FormatMessage

Find

ReverseFind

FindOneOf

MIT Licensed