[zz]MFC - CString類
CString沒有基類。
一個CString對象由可變長度的一隊字符組成。CString使用類似于Basic的語法提供函數和操作符。連接和比較操作符以及簡化的內存管理使CString對象比普通字符串數組容易使用。
CString是基于TCHAR數據類型的對象。如果在你的程序中定義了符號_UNICODE,則TCHAR被定義為類型wchar_t,即16位字符類型;否則,TCHAR被定義為char,即8位字符類型。在UNICODE方式下,CString對象由16位字符組成。非UNICODE方式下,CString對象由8位字符組成。
當不使用_UNICODE時,CString是多字節字符集(MBCS,也被認為是雙字節字符集,DBCS)。注意,對于MBCS字符串,CString仍然基于8位字符來計算,返回,以及處理字符串,并且你的應用程序必須自己解釋MBCS的開始和結束字節。
CString對象還具有下列特征:
提示:如果可能的話,應在框架中而不是堆中分配這個CString對象。這可以節省內存并簡化參數的傳遞。
CString允許兩個具有相同值的字符串共享相同的緩沖空間,這有助于你節省內存空間。但是,如果你初始直接改變該緩沖的內容(不使用MFC),則有可能在無意中改變了兩個字符串。CString提供了兩個成員函數CString::LockBuffer和CString::UnlockBuffer來幫助你保護你的數據。當你調用LockBuffer時,你就創建了一個字符串的一個拷貝,然后將引用計數設置為-1,這就“加鎖”了該緩沖區。當緩沖區被加鎖時,就沒有其它的字符串可以引用該字符串中的數據,被加鎖的字符串也不能引用其它字符串的數據。通過加鎖該緩沖區內的字符串,就可以保證該字符串對數據的持續獨占。當你使用完數據后,調用UnlockBuffer來將引用計數恢復為1。
更多的信息,參見“Visual C++程序員指南”中的“MFC字符串”和“字符串:Unicode和多字節字符集(MBCS)支持”,以及“Microsoft Visual C++庫參考”中的“Microsoft Visual C++ 6.0運行庫參考”。
#include <afx.h>
CString類成員
構造
字符串數組
分配/串聯
比較
提取
其他轉換
搜索
歸檔/存儲
緩沖區訪問
Windows專用
一個CString對象由可變長度的一隊字符組成。CString使用類似于Basic的語法提供函數和操作符。連接和比較操作符以及簡化的內存管理使CString對象比普通字符串數組容易使用。
CString是基于TCHAR數據類型的對象。如果在你的程序中定義了符號_UNICODE,則TCHAR被定義為類型wchar_t,即16位字符類型;否則,TCHAR被定義為char,即8位字符類型。在UNICODE方式下,CString對象由16位字符組成。非UNICODE方式下,CString對象由8位字符組成。
當不使用_UNICODE時,CString是多字節字符集(MBCS,也被認為是雙字節字符集,DBCS)。注意,對于MBCS字符串,CString仍然基于8位字符來計算,返回,以及處理字符串,并且你的應用程序必須自己解釋MBCS的開始和結束字節。
CString對象還具有下列特征:
· | CString可作為連接操作的結果而增大。 |
· | CString對象遵循“值語義”。應將CString看作是一個真實的字符串而不是指向字符串的指針。 |
· | 你可以使用CString對象任意替換const char*和LPCTSTR函數參數。 |
· | 轉換操作符使得直接訪問該字符串的字符就像訪問一個只讀字符(C-風格的字符)數組一樣。 |
CString允許兩個具有相同值的字符串共享相同的緩沖空間,這有助于你節省內存空間。但是,如果你初始直接改變該緩沖的內容(不使用MFC),則有可能在無意中改變了兩個字符串。CString提供了兩個成員函數CString::LockBuffer和CString::UnlockBuffer來幫助你保護你的數據。當你調用LockBuffer時,你就創建了一個字符串的一個拷貝,然后將引用計數設置為-1,這就“加鎖”了該緩沖區。當緩沖區被加鎖時,就沒有其它的字符串可以引用該字符串中的數據,被加鎖的字符串也不能引用其它字符串的數據。通過加鎖該緩沖區內的字符串,就可以保證該字符串對數據的持續獨占。當你使用完數據后,調用UnlockBuffer來將引用計數恢復為1。
更多的信息,參見“Visual C++程序員指南”中的“MFC字符串”和“字符串:Unicode和多字節字符集(MBCS)支持”,以及“Microsoft Visual C++庫參考”中的“Microsoft Visual C++ 6.0運行庫參考”。
#include <afx.h>
CString類成員
構造
CString | 以各種方法構造一個CString對象 |
字符串數組
GetLength | 返回CString對象中的字符數。對多字節字符,按8位字符計算;即在一個多字節字符中一個開始和結束字節算作兩個字符 |
IsEmpty | 測試一個CString對象中是否不含有字符 |
Empty | 強制一個字符串的長度為0 |
GetAt | 返回在給定位置的字符 |
operator [] | 返回在給定位置的字符--它是代替GetAt的操作符 |
SetAt | 設置給定位置上的字符 |
operator LPCTSTR | 像訪問一個C風格的字符串一樣,直接訪問保存在一個CString對象中的字符 |
分配/串聯
operator = | 給CString對象賦一個新值 |
operator + | 連接兩個字符串并返回一個新字符串 |
operator += | 把一個新字符串連接到一個已經存在的字符串的末端 |
比較
operator 比較操作符 | 比較操作符(大小寫敏感) |
Compare | 比較兩個字符串(大小寫敏感) |
CompareNoCase | 比較兩個字符串(不區分大小寫) |
Collate | 比較兩個字符串(大小寫敏感,使用現場特別信息) |
CollateNoCase | 比較兩個字符串(不區分大小寫,使用現場特別信息) |
提取
Mid | 提取一個字符串的中間一部分(類似于BASIC的MID$函數) |
Left | 提取一個字符串的左邊一部分(類似于BASIC的LEFT$函數) |
Right | 提取一個字符串的右邊一部分(類似于BASIC的RIGHT$函數) |
SpanIncluding | 提取一個字符串,該子字符串中僅含有某一字符集合中的字符。 |
SpanExcluding | 提取一個字符串,該子字符串中不含有某一字符集合中的字符。 |
其他轉換
MakeUpper | 將字符串中的所有字符轉換為大寫字符 |
MakeLower | 將字符串中的所有字符轉換為小寫字符 |
MakeReverse | 將字符串中的字符以倒序排列 |
Replace | 用其它字符替換指定的字符 |
Remove | 從一個字符串中移走指定的字符 |
Insert | 在字符串中的給定索引處插入一個字符或一個子字符串 |
Delete | 從一個字符串中刪除一個或多個字符 |
Format | 像sprintf函數一樣格式化該字符串 |
FormatV | 像vprintf函數一樣格式化該字符串 |
TrimLeft | 將字符串中前面的空格整理出字符串 |
TrimRight | 將字符串中結尾的空格整理出字符串 |
FormatMessage | 格式化一個消息字符串 |
搜索
Find | 在一個較大的字符串中查找字符或子字符串 |
ReverseFind | 在一個較大的字符串中從末端開始查找某個字符 |
FindOneOf | 查找與某個字符集合中的字符相匹配的第一個字符 |
歸檔/存儲
operator << | 把一個CString對象插入一個存檔或轉儲的環境中 |
operator >> | 從一個存檔中提取一個CString對象 |
緩沖區訪問
GetBuffer | 返回一個指向CString對象的指針 |
GetBufferSetLength | 返回一個指向CString對象的指針,字符串被截斷為指定的長度 |
ReleaseBuffer | 釋放對GetBuffer所返回的緩沖區的控制權 |
FreeExtra | 通過釋放原先為此字符串分配的額外內存來刪除此字符串對象的額外開銷 |
LockBuffer | 使引用計數無效并保護緩沖區內的數據 |
UnlockBuffer | 使引用計數有效并釋放緩沖區中的數據 |
Windows專用
AllocSysString | 由CString數據分配一個BSTR |
SetSysString | 使用CString對象中的數據來設置一個已存在的BSTR |
LoadString | 從一個Windows資源中加載一個已經存在的CString對象 |
AnsiToOem | 實現由ANSI字符集到OEM字符集的對應轉換 |
OemToAnsi | 實現由OEM字符集到ANSI字符集的對應轉換 |
posted on 2009-10-23 16:07 小默 閱讀(1433) 評論(0) 編輯 收藏 引用 所屬分類: Language