字串資料管理
Visual C++ 提供數種方式來管理字串資料:
用於管理字串的 Win32 API 函式
MFC 的類別
CStringT
類別,可提供彈性且可重設大小的字串物件類別
CStringT
,其提供與 MFC 無關的字串物件,其功能與CString
幾乎所有程式都使用字串數據。 MFC 的 CString
類別通常是彈性字串處理的最佳解決方案。 從 7.0 版開始, CString
可以在 MFC 或 MFC 獨立程式中使用。 運行時間連結庫和支援 CString
包含多位元組(寬)字元的字串,如 Unicode 或 MBCS 程式設計所示。
本文說明類別庫提供與字串操作相關的一般用途服務。 本文涵蓋的主題包括:
CStringT
Class 類別提供操作字串的支援。 其旨在取代和擴充通常由 C 執行時間連結庫字串套件所提供的功能。 類別 CString
會提供簡化字串處理的成員函式和運算符,類似於 Basic 中找到的成員函式和運算符。 類別也提供建構函式和運算符來建構、指派和比較 CString
s 和標準C++字串數據類型。 因為 CString
不衍生自 CObject
,因此您可以在大部分Microsoft基礎類別庫 (MFC) 中獨立使用 CString
物件。
CString
物件遵循「值語意」。 CString
物件代表唯一值。 CString
將 視為實際字串,而不是字串的指標。
CString
物件代表可變字元數的序列。 CString
對象可以視為字元陣列。
Unicode 和 MBCS 提供可移植性
MFC 3.0 版和更新版本為 Unicode 和多位元組位元集啟用 MFC,包括 CString
。 這項支援可讓您更輕鬆地撰寫可攜式應用程式,以針對 Unicode 或 ANSI 字元建置。 若要啟用此可移植性,物件中的每個 CString
字元都是 類型 TCHAR
,其定義為 wchar_t
您在建置應用程式時定義符號 _UNICODE
,或如 char
非。 wchar_t
字元寬 16 位。 如果您使用定義的符號 _MBCS
來建置,則會啟用 MBCS。 MFC 本身是使用 _MBCS
已定義的符號(適用於 NAFX 連結庫)或 _UNICODE
符號(適用於 UAFX 連結庫)所建置。
注意
CString
此範例和字串上隨附的文章會使用 _T
巨集,顯示正確格式化為 Unicode 可移植性的常值字串,其會將常值字串轉譯為表單:
L"literal string"
注意
編譯程式會將它視為 Unicode 字串。 例如,下列程式碼:
CString strName = _T("Name");
注意
如果 _UNICODE
已定義,則會轉譯為 Unicode 字串,否則會轉譯為 ANSI 字串。 如需詳細資訊,請參閱 Unicode 和多位元組位元集 (MBCS) 支援一文。
CString
物件最多可以儲存 INT_MAX
2,147,483,647 個字元。 數據類型 TCHAR
是用來取得或設定 物件內的 CString
個別字元。 不同於字元陣列,類別 CString
具有內建的記憶體配置功能。 這可讓 CString
物件視需要自動成長(也就是說,您不必擔心成長 CString
物件以符合較長的字串)。
CStrings
和 const char
指標
CString
物件也可以像常值 C 樣式字串一樣行事(a PCXSTR
,與 Unicode 下不相同const char*
)。 轉換 CSimpleStringT::operator PCXSTR
運算子可讓 CString
物件自由取代函數調用中的字元指標。 建 CString(LPCWSTR pszSrc)
構函式可讓字元指標取代 CString
物件。
不會嘗試折迭 CString
物件。 如果您建立包含 Chicago
的兩個 CString
物件,例如,中的Chicago
字元會儲存在兩個位置。 (這可能不是未來的 MFC 版本,所以您不應該依賴它。
注意
CSimpleStringT::GetBuffer
當您需要直接存取 CString
作為字元的非常值指標時,請使用 和 CSimpleStringT::ReleaseBuffer
成員函式。
注意
CStringT::AllocSysString
使用和 CStringT::SetSysString
成員函式來配置和設定BSTR
自動化中使用的物件(先前稱為 OLE Automation)。
注意
可能的話,請在框架上配置 CString
物件,而不是在堆積上配置物件。 這樣可節省記憶體並簡化參數傳遞。
類別 CString
不會實作為Microsoft Foundation Class Library 集合類別,不過 CString
對象當然可以儲存為集合中的專案。
CString
參考計數
從 MFC 4.0 版起,複製 Class 物件時CStringT
,MFC 會遞增參考計數,而不是複製數據。 這可讓以傳值方式傳遞參數,並以值傳回 CString
物件更有效率。 這些作業會導致呼叫複製建構函式,有時多次。 遞增參考計數可減少這些常見作業的額外負荷,並使用 CString
更具吸引力的選項。
當每個復本終結時,原始物件中的參考計數會遞減。 在參考計數縮減為零之前,原始 CString
物件不會終結。
您可以使用成員函 CString
式 CSimpleStringT::LockBuffer
,並 CSimpleStringT::UnlockBuffer
停用或啟用參考計數。