CString沒有基類。
一個(gè)CString對(duì)象由
可變長(zhǎng)度的一隊(duì)字符組成。CString使用類似于Basic的語(yǔ)法提供函數(shù)和操作符。連接和比較操作符以及簡(jiǎn)化的內(nèi)存管理使CString對(duì)象比普通字符串?dāng)?shù)組容易使用。
CString是
基于TCHAR數(shù)據(jù)類型的對(duì)象。如果在你的程序中定義了符號(hào)_UNICODE,則TCHAR被定義為類型wchar_t,即16位字符類型;否則,TCHAR被定義為char,即8位字符類型。在UNICODE方式下,CString對(duì)象由16位字符組成。非UNICODE方式下,CString對(duì)象由8位字符組成。
當(dāng)不使用_UNICODE時(shí),CString是多字節(jié)字符集(MBCS,也被認(rèn)為是雙字節(jié)字符集,DBCS)。注意,對(duì)于MBCS字符串,CString仍然基于8位字符來計(jì)算,返回,以及處理字符串,并且你的應(yīng)用程序必須自己解釋MBCS的開始和結(jié)束字節(jié)。
CString對(duì)象還具有下列特征:
·
|
CString可作為連接操作的結(jié)果而增大。
|
·
|
CString對(duì)象遵循“值語(yǔ)義”。應(yīng)將CString看作是一個(gè)真實(shí)的字符串而不是指向字符串的指針。
|
·
|
你可以使用CString對(duì)象任意替換const char*和LPCTSTR函數(shù)參數(shù)。
|
·
|
轉(zhuǎn)換操作符使得直接訪問該字符串的字符就像訪問一個(gè)只讀字符(C-風(fēng)格的字符)數(shù)組一樣。 |
提示:如果可能的話,應(yīng)在框架中而不是堆中分配這個(gè)CString對(duì)象。這可以節(jié)省內(nèi)存并簡(jiǎn)化參數(shù)的傳遞。
CString允許兩個(gè)具有相同值的字符串共享相同的緩沖空間,這有助于你節(jié)省內(nèi)存空間。但是,如果你初始直接改變?cè)摼彌_的內(nèi)容(不使用MFC),則有可能在無意中改變了兩個(gè)字符串。CString提供了兩個(gè)成員函數(shù)CString::LockBuffer和CString::UnlockBuffer來幫助你保護(hù)你的數(shù)據(jù)。當(dāng)你調(diào)用LockBuffer時(shí),你就創(chuàng)建了一個(gè)字符串的一個(gè)拷貝,然后將引用計(jì)數(shù)設(shè)置為-1,這就“加鎖”了該緩沖區(qū)。當(dāng)緩沖區(qū)被加鎖時(shí),就沒有其它的字符串可以引用該字符串中的數(shù)據(jù),被加鎖的字符串也不能引用其它字符串的數(shù)據(jù)。通過加鎖該緩沖區(qū)內(nèi)的字符串,就可以保證該字符串對(duì)數(shù)據(jù)的持續(xù)獨(dú)占。當(dāng)你使用完數(shù)據(jù)后,調(diào)用UnlockBuffer來將引用計(jì)數(shù)恢復(fù)為1。
更多的信息,參見“Visual C++程序員指南”中的“MFC字符串”和“字符串:Unicode和多字節(jié)字符集(MBCS)支持”,以及“Microsoft Visual C++庫(kù)參考”中的“Microsoft Visual C++ 6.0運(yùn)行庫(kù)參考”。
#include <afx.h>
CString類成員
構(gòu)造
CString
|
以各種方法構(gòu)造一個(gè)CString對(duì)象 |
字符串?dāng)?shù)組
GetLength
|
返回CString對(duì)象中的字符數(shù)。對(duì)多字節(jié)字符,按8位字符計(jì)算;即在一個(gè)多字節(jié)字符中一個(gè)開始和結(jié)束字節(jié)算作兩個(gè)字符
|
IsEmpty
|
測(cè)試一個(gè)CString對(duì)象中是否不含有字符
|
Empty
|
強(qiáng)制一個(gè)字符串的長(zhǎng)度為0
|
GetAt
|
返回在給定位置的字符
|
operator []
|
返回在給定位置的字符--它是代替GetAt的操作符
|
SetAt
|
設(shè)置給定位置上的字符
|
operator LPCTSTR
|
像訪問一個(gè)C風(fēng)格的字符串一樣,直接訪問保存在一個(gè)CString對(duì)象中的字符 |
分配/串聯(lián)
比較
提取
Mid
|
提取一個(gè)字符串的中間一部分(類似于BASIC的MID$函數(shù))
|
Left
|
提取一個(gè)字符串的左邊一部分(類似于BASIC的LEFT$函數(shù))
|
Right
|
提取一個(gè)字符串的右邊一部分(類似于BASIC的RIGHT$函數(shù))
|
SpanIncluding
|
提取一個(gè)字符串,該子字符串中僅含有某一字符集合中的字符。
|
SpanExcluding
|
提取一個(gè)字符串,該子字符串中不含有某一字符集合中的字符。 |
其他轉(zhuǎn)換
搜索
歸檔/存儲(chǔ)
operator <<
|
把一個(gè)CString對(duì)象插入一個(gè)存檔或轉(zhuǎn)儲(chǔ)的環(huán)境中
|
operator >>
|
從一個(gè)存檔中提取一個(gè)CString對(duì)象 |
緩沖區(qū)訪問
Windows專用
AllocSysString
|
由CString數(shù)據(jù)分配一個(gè)BSTR
|
SetSysString
|
使用CString對(duì)象中的數(shù)據(jù)來設(shè)置一個(gè)已存在的BSTR
|
LoadString
|
從一個(gè)Windows資源中加載一個(gè)已經(jīng)存在的CString對(duì)象
|
AnsiToOem
|
實(shí)現(xiàn)由ANSI字符集到OEM字符集的對(duì)應(yīng)轉(zhuǎn)換
|
OemToAnsi
|
實(shí)現(xiàn)由OEM字符集到ANSI字符集的對(duì)應(yīng)轉(zhuǎn)換 |