共用方式為


字串資料管理

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

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

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

CStringT Class 類別 提供操作字串的支援。 其旨在取代和擴充通常由 C 執行時間程式庫字串套件所提供的功能。 類別 CString 會提供簡化字串處理的成員函式和運算子,類似于 Basic 中找到的成員函式和運算子。 類別也提供建構函式和運算子,以建構、指派和比較 CString s 和標準 C++ 字串資料類型。 因為 CString 不是衍生自 CObject ,因此您可以獨立于大部分的 Microsoft Foundation Class Library (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 主題