版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、CString 類所有成員函數(shù)詳解2009-03-27 10:53CString 類所有成員函數(shù)詳解VC里CString是我們最常用的類之一,我們覺得對它很熟悉了,可是你知道它 的所有用法嗎還是系統(tǒng)的學習一下吧,認真看完本文就OK了。下面開始:CString:Compareint Compare( LPCTSTR lpsz ) const;返回值 字符串一樣返回 0? 小于lpsz 返回 -1? 大于lpsz 返回1? 區(qū)分大小字符? CString s1( "abc" );CString s2( "abd" );ASSERT( ( s2 ) = -1
2、);ASSERT( ( "abe" ) = -1 );CString:CompareNoCaseint CompareNoCase( LPCTSTR lpsz ) const;返回值 字符串一樣返回 0? 小于 lpsz 返回 -1? 大于 lpsz 返回 1? 不區(qū)分大小字符CString:Collateint Collate( LPCTSTR lpsz ) const;同 CString:CompareCString:CollateNoCaseint CollateNocase( LPCTSTR lpsz ) const;同 CString:CompareNoCaseC
3、String:CStringCString( );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 s
4、4( s2 + " " + s3 );?CString s5( 'x' );? CString:Formatvoid Format( LPCTSTR lpszFormat, . );void Format( UINT nFormatID, . );lpszFormat 一個格式控制字符串nFormatID 字符串標識符例子? CString str;( “%d” ,13);此時 Str 為 13CString:GetAtTCHAR GetAt( int nIndex ) const;返回標號為 nIndex 的字符,你可以把字符串理解為一個數(shù)組, GetAt
5、 類似于 .注意 nIndex 的范圍,如果不合適會有調(diào)試錯誤。CString:GetBufferLPTSTR GetBuffer( int nMinBufLength );返回值一個指向?qū)ο蟮?以空字符結(jié)尾的)字符緩沖區(qū)的LPTSTR指針。參數(shù)nMinBufLength字符緩沖區(qū)的以字符數(shù)表示的最小容量。這個值不包括一個結(jié)尾的空字符的空間。說明此成員函數(shù)返回一個指向 CString 對象的內(nèi)部字符緩沖區(qū)的指針。返回的LPTSTR不是const ,因此可以允許直接修改 CString的內(nèi)容。如果你使用由GetBuffer 返回的指針來改變字符串的內(nèi)容,你必須在使用其它的 CString 成員函
6、數(shù)之前調(diào)用 ReleaseBuffer 函數(shù)。在調(diào)用 ReleaseBuffer 之后,由 GetBuffer 返回的地址也許就無效了,因為其它的 CString 操作可能會導致CString 緩沖區(qū)被重新分配。如果你沒有改變此CString 的長度,則緩沖區(qū)不會被重新分配。當此 CString 對象被銷毀時,其緩沖區(qū)內(nèi)存將被自動釋放。注意,如果你自己知道字符串的長度,則你不應該添加結(jié)尾的空字符。但是,當你用 ReleaseBuffer 來釋放該緩沖區(qū)時,你必須指定最后的字符串長度。如果你添加了結(jié)尾的空字符, 你應該給 ReleaseBuffer 的長度參數(shù)傳遞-1 ,ReleaseBuffe
7、r 將對該緩沖區(qū)執(zhí)行strlen 來確定它的長度。下面的例子說明了如何用 CString:GetBuffer 。Hockeyis Best2. Hockey is Best3. Hockey is Best!CString:IsEmptyBOOL IsEmpty( ) const;返回值0。如果 CString 對象的長度為0,則返回非零值;否則返回說明此成員函數(shù)用來測試一個CString 對象是否是空的。示例下面的例子說明了如何使用 CString:IsEmpty 。;int n = ( 't' );ASSERT( n = 2 );ASSERT( str = “This is
8、 a es. ” );CString:Replaceint Replace( TCHAR chOld, TCHAR chNew );int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );返回值返回被替換的字符數(shù)。如果這個字符串沒有改變則返回零。參數(shù)chOld要被 chNew 替換的字符chNew要用來替換chOld 的字符。lpszOld一個指向字符串的指針,該字符串包含了要被lpszNew 替換的字符。lpszNew一個指向字符串的指針,該字符串包含了要用來替換lpszOld 的字符。說明此成員函數(shù)用一個字符替換另一個字符。 函數(shù)的第一個原形在字符串
9、中用 chNew現(xiàn)場替換chOld 。函數(shù)的第二個原形用lpszNew 指定的字符串替換lpszOld 指定的子串。在替換之后,該字符串有可能增長或縮短;那是因為 lpszNew 和 lpszOld 的長度不需要是相等的。兩種版本形式都進行區(qū)分大小寫的匹配。CString 類CString 類沒有基本類,類的聲明保存在頭文件中。一個 CString 對象是由可變長度的字符串組成, CString 類提供了函數(shù)和操作符,內(nèi)存管理,使用起來比字符數(shù)字容易的多。CString類基于TCHA敵據(jù)類型,如果你的程序采用_UNICOD字符集,則TCHAR將被定義為 16 位, char 類型默認采用 8
10、位CString 類的初始化:CString();聲明一個 CString 對象,但沒有初始化該對象。CString(const CString& stringSrc);Throw(CMemoryException);該構造函數(shù)表示將一個已經(jīng)存在的 CString 對象拷貝到聲明的 CString 對象中。CString(TCHAR ch, int nRepeat = 1);throw(CMemoryException);該構造函數(shù)表示將ch 這個簡單字符重復nRepeat 遍來創(chuàng)建一個CString 對象。CString(LPCTSTR lpch , int nLength);thr
11、ow(CMemoryException);構造一個長度為 nLength 的 CString 對象, 該對象初始化值為一個字符串數(shù)組常 量指針。CString(const unsigned char* psz);Throw(CMemoryException);根據(jù)無符號字符指針創(chuàng)建CString 對象。CString(LPCWSTR lpsz);throw(CMemoryException);根據(jù)一個 unicode 字符串來創(chuàng)建一個CString 對象。CString(LPCSTR lpsz);throw(CMemoryException);根據(jù)一個 ansi 字符串來創(chuàng)建一個unicode
12、 CString 對象。作為數(shù)組的串:int GetLength() const;返回該串的字節(jié)數(shù), 該函數(shù)返回值不包括空結(jié)束符”0”,如果該 CString 對象被聲明成 unicode 字符集, 則會按照一個字符兩個字節(jié)來計算CString 對象的長度。BOOL IsEmpty() const;如果 CString 對象的長度為 0 則返回為非0,否則返回 0 值。void Empty();將 CString 對象設置為空串并且相應的釋放掉內(nèi)存。TCHAR GetAt(int nIndex) const;返回該串特定位置的字符, nIndex 是數(shù)組的下標,從0開始,注意nIndex 的范
13、圍為 0 到 GetLength()-1 。TCHA:R是為了統(tǒng)一多語言編碼而設計的;ANSI單字符編碼? UNICOD E雙字節(jié)字符編碼 ? UTF-8三字節(jié)字符編碼TCHAR operator(int nIndex) const ;用數(shù)組下標的方式來返回某個字符, nIndex 是數(shù)組的下標, 從 0開始, 注意 nIndex的范圍為 0 到 GetLength()-1 。注意你不能通過這種方式來改變該位置的字符。void SetAt(int nIndex, TCHAR ch);將CSring對象中nIndex位置的字符改為ch,注意nIndex的范圍為0到 GetLength()-1 ,
14、注意改函數(shù)只能修改某個位置上的字符,不能增加字符。operator LPCTSTR() const;返回串數(shù)據(jù)的字符指針串合并操作:const CString& operator = (const CString& stringSrc);throw(CMemoryException);const CString& operator = (TCHAR ch);throw(CMemoryException);const CString& operator = (const unsigned char* psz);throw(CMemoryException);con
15、st CString& operator = (LPCWSTR lpsz);throw(CMemoryException);const CString& operator = (LPCSTR lpsz);throw(CMemoryException);賦值操作,不考慮對象的長度。friend CString operator + (const CString& string1, const CString& string2);throw(CMmeoryException);friend CString operator + (const CString&
16、 string, TCHAR ch);throw(CMmeoryException);friend CString operator + (TCHAR ch, const CString& string);throw(CMmeoryException);friend CString operator + (const CString& string, LPCTSTR lpsz);throw(CMmeoryException);friend CString operator + (LPCTSTR lpsz, const CString& string);throw(CMm
17、eoryException);const CString& operator += (const CString& string);throw(CMemoryException);const CString& operator += (TCHAR ch);throw(CMemoryException);const CString& operator += (LPCTSTR lpsz);throw(CMemoryException);比較操作符:只能使用兩種 CString , LPCTSTRBOOL operator =(const CString& s
18、1, 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);BOO
19、L 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
20、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 opera
21、tor >(const CString& s1, LPCTSTR s2);BOOL operator >( LPCTSTR s1, const CString& s2);int Compare(LPCTSTR lpsz) const; 區(qū)別大小寫字幕該函數(shù)對兩個CString 對象進行,如果內(nèi)容完全一致則返回0;如果長度小于lpsz , 則返回為 -1 , 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1。int CompareNoCase(LPCTSTR lpsz) const; 不區(qū)分大小寫字母該函數(shù)對兩個CString 對象進
22、行,如果內(nèi)容完全一致則返回0;如果長度小于lpsz , 則返回為 -1 , 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1 int Compare(LPCTSTR lpsz) const; 區(qū)別大小寫字幕該函數(shù)對兩個CString 對象進行,如果內(nèi)容完全一致則返回0;如果長度小于lpsz , 則返回為 -1 , 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1。int CompareNoCase(LPCTSTR lpsz) const; 不區(qū)分大小寫字母該函數(shù)對兩個CString 對象進行,如果內(nèi)容完全一致則返回 0;如果長
23、度小于lpsz , 則返回為 -1 , 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1。int Collate(LPCTSTR lpsz) const; 區(qū)別大小寫字幕該函數(shù)對兩個CString 對象進行,如果內(nèi)容完全一致則返回0;如果長度小于lpsz , 則返回為 -1 , 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1。int CollateNoCase(LPCTSTR lpsz) const; 不區(qū)分大小寫字母該函數(shù)對兩個CString 對象進行,如果內(nèi)容完全一致則返回0;如果長度小于lpsz , 則返回為 -1 ,
24、 如果長度一致, 但內(nèi)容不同, 則返回 -1 ; 如果長度大于lpsz ,則返回 1。Compare和Collate 函數(shù)的區(qū)別:Compare函數(shù)和=!算符是等效的,Compare =、CompareNoCasMiR另MBCS 和Unicode, Collate區(qū)別區(qū)域性,運算比Compare慢,僅當有必要遵守當前區(qū) 域指定的排序規(guī)則時,才使用 Collate 函數(shù)。抽取函數(shù):CString Mid(int nFirst) const;throw(CMemoryException);從一個 CString 對象中提取從nFirst 開始到結(jié)尾的串, 返回值是 CString 對象,注意返回值
25、可能為空。CString Mid(int nFirst , int nCount) const;throw(CMemoryException);從一個 CString 對象中提取從nFirst 開始的長度為 nCount 的串,返回值是CString 對象,注意返回值可能為空。注意上述兩種用法,當 CString 對象是表示多字節(jié)的字符串時, nCount 表示的是一個 8 為字符的長度,例,對應 unicode 字符集要取n 個字符則需要將nCount=2*n。CString Left(int nCount) const;throw(CMemoryException);從一個 CString
26、 對象中提取從開始位置, 長度為 nCount 的串, 返回值是 CString 對象,注意返回值可能為空。CString Right(int nCount) const;throw(CMemoryException);從一個 CString 對象中提取從結(jié)束位置, 長度為 nCount 的串, 返回值是 CString 對象,注意返回值可能為空。CString SpanIncluding(LPCTSTR lpszCharSet) const;throw(CMemoryException);從原CString對象中第一個字符開始提取字符 charactor與指定的LPCTST滕進 行比對,如果
27、該字符charactor在LPCTST超中,則繼續(xù)進行下一個字符是否在 LPCTST就中的比較,如果不在,則將該字符前的所有字符串返回構造成一個新 的CString對象,如果從第一開始就不在 LPCTST就中,則返回一個空CString對象。CString SpanExcluding(LPCTSTR lpszCharSet) const;throw(CMemoryException);作用與 SpanIncluding 函數(shù)想反,表示從CString 對象中一旦找到是LPCTSTR串中字符時就返回一個CString 對象。轉(zhuǎn)換函數(shù):void MakeUpper();將 CString 對象里的
28、字符全部轉(zhuǎn)換為大寫字符。void MakeLower();將 CString 對象里的字符全部轉(zhuǎn)換為小寫字符。void MakeReverse();將 CString 對象里的字符串顛倒順序。int Replace(TCHAR chOld, TCHAR chNew);int Replace(LPCTSTR lpszOld , LPCTSTR lpszNew);該函數(shù)返回值表示被替換的 chOld 、 lpszOld 的個數(shù)。int Remove(TCHAR ch);從一個 CString 對象中刪除ch 字符串, 返回值是刪除的 ch 字符串個數(shù), 如果該對象沒有改變,表示沒有ch 字符串被刪
29、除,返回值為0。int Insert(int nIndex, TCHAR ch);throw(CMemoryException);int Insert(int nIndex, LPCTSTR pstr);throw(CMemoryException);向 CString 對象插入一個字符或者字符串,從nIndex 位置開始開始插入,如果nIndex 為 0,表示從首部開始,如果nIndex 大于 CString 對象的長度,則會從尾部開始。該函數(shù)返回改變長度后的對象的長度。int Delete(int nIndex, int nCount = 1);throw(CMemoryException
30、);對 CString 對象進行字符或者字符串進行刪除操作,從nIndex 位置開始的nCount 個字符從 CString 對象中刪除,返回值為操作后 CString 對象的長度。void Format(LPCTSTR IpszFormat,);void Format(UINT nFormatID,);將 CString 對象值按照 lpszFormat 或者 nFormatID 定義的格式進行了修改。CString? str ="大夫拉薩地方”;?int? i=10;?("%i",i);str 的最終值是"10"lpszFormat 詳細內(nèi)
31、容參照:里的說明。printf Type Field CharactersCharacter Type Output formatc int or wint_t Whenused with printf functions, 指定為 8 位字符 ; whenused with wprintf functions, 指定位為 16 位字符。 .C int or wint_t Whenused with printf functions, 指定位為 16 位字符 ; when used with wprintf functions, 指定為 8 位字符 . 用法和 c 相反。d int有符號的十進
32、制整數(shù)i int 有符號的十進制整數(shù)o int無符合的八進制整數(shù)u int無符合的八進制整數(shù)x int無符號的十六進制整數(shù),using"abcdef."X int無符號的十六進制整數(shù),using"ABCDEF."e double Signed value having the form - e signddd where d is asingle decimal digit, dddd is one or more decimal digits, ddd is two or three decimal digits depending on the ou
33、tput format and size of the exponent, and sign is + or -.E double Identical to the e format except that E rather than e introduces the exponent.f double Signed value having the form - , where dddd is one or moredecimal digits. The number of digits before the decimal point depends on the magnitude of
34、 the number, and the number of digits after the decimal point depends on the requested precision.g double Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than - 4 or greater than or e
35、qual to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it.G double Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate).a double Signed hexadecimal double precision floating point v
36、alue havingthe form p ± dd, where are the hex digits (using lower caseletters)of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.A double Signed hexadecimal double precision floating point value having the form P ±
37、dd, where are the hex digits (us ing capital letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.n Pointer to integer Number of characters successfully written so far to the stream or buffer; this value is stored in t
38、he integer whose addressis given as the argument. See Security Note below.p Pointer to void Prints the address of the argument in hexadecimal digits.s String When used with printf functions, specifies asingle-byte character string; when used with wprintf functions, specifies a wide-character string.
39、 Characters are printed up to the first null character or until the precision value is reached.S String When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies asingle-byte - character string. Characters are printed up to the first null charact
40、er or until the precision value is reached.void FormatV(LPCTSTR lpszFormat,va_list argList);將函數(shù)Format中關于部分的內(nèi)容用va_list變量來表示,功能和Format相同cvoid TrimLeft();void CString:TrimLeft(TCHAR chTarget);void CString:TrimLeft(LPCTSTR lpszTargets);當該函數(shù)沒有參數(shù)時, 對應一個 CString 對象, 將去掉串的首部空白空格 (新行、空格、 tab 字符)字符串。當該函數(shù)有參數(shù)時,
41、將從 CString對象的開始去掉規(guī)定的字符 TCHA減字符串 lpszTargets 。void TrimRight();void CString:TrimRight(TCHAR chTarget);void CString:TrimRight(LPCTSTR lpszTargets);用法與 TrimLeft 相似,不過是處理CString 對象的尾部字符。void FormatMessage(LPCTSTR IpszFormat,);void FormatMessage(UINT nFormatID,);格式化消息字符串,查找函數(shù):int Find(TCHAR ch) const;int
42、 Find(LPCTSTR lpszSub) const;int Find(TCHAR ch , int nStart) const;int Find(LPCTSTR lpszSub , int nStart) const;該函數(shù)用來在CString 對象中查找字符ch 或者字符串 lpszSub ,如果找到則返回第一個字符所在位置索引值。 nStart 表示該函數(shù)可以從規(guī)定的位置開始進行查找。int ReverseFind(TCHAR ch) const;在CString對象中找到最后一個字符ch,返回值是該位置值,如果沒有找到返 回 -1 。int FindOneOf(LPCTSTR lp
43、szCharSet) const;從 CString 對象中查找到字符串 lpszCharSet 中任何一個字符就返回該位置值。friend CArchive& operator <<(CArchive& ar, const CString& string);throw(CMemoryException);friend CArchive& operator >>(CArchive& ar, const CString& string);throw(CMemoryException);friend CDumpContext&
44、amp; operator <<(CDumpContext& dc, const CString& string);throw(CMemoryException);CArchiev<<CString :將CString 對象內(nèi)容寫入到CArchive 中。CArchiev>>CString :將CArchive 對象內(nèi)容寫入到 CString 中。緩沖區(qū)訪問函數(shù):LPTSTR GetBuffer(int nMinBufLength);throw(CMemoryException);返回 CString 對象的內(nèi)容緩沖區(qū)的頭指針, nMinBufLength 是設定的內(nèi)容緩沖區(qū)的大小,在實際的使用中采用CString:GetBuffer(CString:GetLength() 或者用 CString:GetBuffer(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版大型商業(yè)綜合體消防報警系統(tǒng)安裝合同
- 2025年度木材銷售代理合同范本4篇
- 2025版牧業(yè)冷鏈物流配送與承包服務合同4篇
- 2025版小區(qū)消防應急照明與疏散指示系統(tǒng)維護合同3篇
- 《婚姻制度篇案例》課件
- 二零二五年度食品原料采購合同規(guī)范2篇
- 2025版塔吊租賃合同樣板(智能監(jiān)控)3篇
- 乳品市場分析與營銷策略考核試卷
- 《經(jīng)皮腎鏡碎石》課件
- 二零二五年高速公路交通協(xié)管員職責規(guī)范合同范本3篇
- 慈溪高一期末數(shù)學試卷
- 天津市武清區(qū)2024-2025學年八年級(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹脂項目環(huán)境影響評價
- 高端民用航空復材智能制造交付中心項目環(huán)評資料環(huán)境影響
- 量子醫(yī)學成像學行業(yè)研究報告
- DB22T 3268-2021 糧食收儲企業(yè)安全生產(chǎn)標準化評定規(guī)范
- 辦事居間協(xié)議合同范例
- 正念減壓療法詳解課件
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 重大事故隱患判定標準與相關事故案例培訓課件
評論
0/150
提交評論