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