引用:http://www.wretch.cc/blog/bigdstut/13523891
CString::Compareint Compare( LPCTSTR lpsz ) const;
返回值 字串一樣 返回0
小於lpsz 返回-1
大於lpsz 返回1
區分大小字元
CString s1( "abc" );
CString s2( "abd" );
ASSERT( s1.Compare( s2 ) == -1 );
ASSERT( s1.Compare( "abe" ) == -1 );
CString::CompareNoCase
int CompareNoCase( LPCTSTR lpsz ) const;
返回值 字串一樣 返回0
小於lpsz 返回-1
大於lpsz 返回1
不區分大小字元
CString::Collate
int Collate( LPCTSTR lpsz ) const;
同CString::Compare
CString::CollateNoCase
int CollateNocase( LPCTSTR lpsz ) const;
同CString::CompareNoCase
CString::CString
CString( );
CString( const CString& stringSrc );
CString( TCHAR ch, int nRepeat = 1 );
CString( LPCTSTR lpch, int nLength );
CString( const unsigned char* psz );
CString( LPCWSTR lpsz );
CString( LPCSTR lpsz );
例子最容易說明問題
CString s1;
CString s2( "cat" );
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";
CString::Delete
int Delete( int nIndex, int nCount = 1);
返回值是被刪除前的字串的長度
nIndex是第一個被刪除的字元,nCount是一次刪除幾個字元。根據我實驗得出的結果:當nCount>
刪除字串的最大長度(GetCount() - nIndex)時會出錯,當nCount過大,沒有足夠的字元刪除
,此函數不執行。
例子
CString str1,str2,str3;
char a;
str1 = "nihao";
str2 = "nIhao";
int x;
// int i=(str1 == str2);
str1.Delete(2,3);
如果nCount(3) > GetCount() – nIndex (5-2)就會執行錯誤
CString::Empty
Void Empty( );
沒有返回值 清空操作;
例子
CString s( "abc" );
s.Empty();
ASSERT( s.GetLength( ) == 0 );
CString::Find
int Find( TCHAR ch ) const;
int Find( LPCTSTR lpszSub ) const;
int Find( TCHAR ch, int nStart ) const;
int Find( LPCTSTR lpszSub, int nStart ) const;
返回值 不匹配的話返回 -1; 索引以0 開始
nStar 代表以索引值nStart 的字元開始搜索 ,
即為包含以索引nStart字元後的字串
例子
CString s( "abcdef" );
ASSERT( s.Find( 'c' ) == 2 );
ASSERT( s.Find( "de" ) == 3 );
Cstring str(“The stars are aligned”);
Ing n = str.Find('e',5);
ASSERT(n == 12)
CString::FindOneOf
int FindOneOf( LPCTSTR lpszCharSet ) const;
返回值 不匹配的話返回 -1; 索引以0 開始
注意::返回此字串中第一個在lpszCharSet中 也包括字元並且從零開始的索引值
例子
CString s( "abcdef" );
ASSERT( s.FindOneOf( "xd" ) == 3 ); // 'd' is first match.
CString::Format
void Format( LPCTSTR lpszFormat, ... );
void Format( UINT nFormatID, ... );
lpszFormat 一個格式控制字串
nFormatID 字串識別字
例子
CString str;
Str.Format(“%d”,13);
此時Str為13
CString::GetAt
TCHAR GetAt( int nIndex ) const;
返回標號為nIndex的字元,你可以把字串理解為一個陣列,GetAt類似於[].注意nIndex的範
,如果不合適會有調試錯誤。
CString::GetBuffer
LPTSTR GetBuffer( int nMinBufLength );
返回值
一個指向物件的(以空字元結尾的)字元緩衝區的LPTSTR 指標。
參數
nMinBufLength
字元緩衝區的以字元數表示的最小容量。這個值不包括一個結尾的空字元的空間。
說明
此成員函數返回一個指向CString 物件的內部字元緩衝區的指標。返回的LPTSTR 不是const,
此可以允許直接修改CString 的內容。如果你使用由GetBuffer 返回的指標來改變字串的內容,
必須在使用其他的CString 成員函數之前調用ReleaseBuffer 函數。
在調用ReleaseBuffer 之後,由GetBuffer 返回的位址也許就無效了,因為其他的CString 操
可能會導致CString 緩衝區被重新分配。如果你沒有改變此CString 的長度,則緩衝區不會被重
分配。當此CString 物件被銷毀時,其緩衝區記憶體將被自動釋放。
注意,如果你自己知道字串的長度,則你不應該添加結尾的空字元。但是,當你用ReleaseBuffer
釋放該緩衝區時,你必須指定最後的字串長度。如果你添加了結尾的空字元, 你應該給
eleaseBuffer 的長度參數傳遞-1 ,ReleaseBuffer 將對該緩衝區執行strlen 來確定它的長
。
下面的例子說明了如何用CString::GetBuffer。
// CString::GetBuffer 例子
CString s( "abcd" );
#ifdef _DEBUG
afxDump << "CString s " << p =" s.GetBuffer(" n =" str.Insert(" n ="="" n =" str.Insert(" n ="="" n =" str.Insert(555," n ="="" nnewlength =" -1" s = "abc" p =" s.GetBuffer(" n =" str.Remove(" n ="="" str ="="“This" n =" strZap.Replace('-'," n ="="" strzap ="="" n =" strBang.Replace(" n ="="1" n =" strBang.Replace" n ="="" n =" strBang.Replace(" n ="="" strbang ="="" s ="="" str = "\n\t a" str = "abbcadbabcadb ">