共用方式為


字串資料管理

Visual C++ 提供數種方式來管理字串資料:

幾乎所有程式都使用字串數據。 MFC 的 CString 類別通常是彈性字串處理的最佳解決方案。 從 7.0 版開始, CString 可以在 MFC 或 MFC 獨立程式中使用。 運行時間連結庫和支援 CString 包含多位元組(寬)字元的字串,如 Unicode 或 MBCS 程式設計所示。

本文說明類別庫提供與字串操作相關的一般用途服務。 本文涵蓋的主題包括:

CStringT Class 類別提供操作字串的支援。 其旨在取代和擴充通常由 C 執行時間連結庫字串套件所提供的功能。 類別 CString 會提供簡化字串處理的成員函式和運算符,類似於 Basic 中找到的成員函式和運算符。 類別也提供建構函式和運算符來建構、指派和比較 CStrings 和標準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 物件以符合較長的字串)。

CStringsconst 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 物件不會終結。

您可以使用成員函 CStringCSimpleStringT::LockBuffer ,並 CSimpleStringT::UnlockBuffer 停用或啟用參考計數。

另請參閱

一般 MFC 主題