共用方式為


基本 CString 運算

本主題說明下列基本 CString 作業:

Class CString 是以類別範本 CStringT 類別 為基礎。 CStringtypedef是 的 CStringT 。 更確切地說, CStringtypedef 明確特製化的 CStringT ,這是使用類別範本定義類別的常見方式。 同樣定義的類別是 CStringACStringW

CStringCStringACStringW 定義于 atlstr.h 中。 CStringT 定義于 cstringt.h。

CStringCStringACStringW 每個都會取得一組由 定義 CStringT 的方法和運算子,以搭配其支援的字串資料使用。 某些方法會複製 ,在某些情況下會超過 C 執行時間程式庫的字串服務。

注意: CString 是原生類別。 對於用於 C++/CLI Managed 專案的字串類別,請使用 System.String

從標準 C 常值字串建立 CString 物件

您可以將 C 樣式常值字串指派給 , CString 就像您可以將一個物件指派給另一個 CString 物件一樣。

  • 將 C 常值字串的值指派給 CString 物件。

    CString myString = _T("This is a test");   
    
  • 將一個的值指派給另一個 CStringCString 物件。

    CString oldString = _T("This is a test");
    CString newString = oldString;
    

    當某個物件指派給另一個 CStringCString 物件時,會複製物件的內容。 因此,這兩個字串不會共用構成字串的實際字元參考。 如需如何使用 CString 物件做為值的詳細資訊,請參閱 CString 語意

    注意

    若要撰寫您的應用程式,以便針對 Unicode 或 ANSI 進行編譯,請使用 _T 宏來撰寫常值字串。 如需詳細資訊,請參閱 Unicode 和多位元組字元集 (MBCS) 支援

存取 CString 中的個別字元

您可以使用 和 SetAt 方法來存取 物件 GetAt 中的 CString 個別字元。 您也可以使用陣列元素或下標運算子 ([ ] ) 來取得 GetAt 個別字元。 (這類似于依索引存取陣列元素,如標準 C 樣式字串所示。字元的 CString 索引值是以零起始。

串連兩個 CString 物件

若要串連兩個 CString 物件,請使用串連運算子 (+ 或 +=),如下所示。

CString s1 = _T("This ");        // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;  
// Message contains "This is a big test".

串連運算子的至少一個 CString 引數 (+ 或 +=) 必須是 物件,但您可以使用常數位符字串 (例如 "big" , ) 或 char (例如 , 'x') 作為另一個引數。

比較 CString 物件

Compare的 方法和 == 運算子 CString 相等。 Compare operator== , 和 CompareNoCase 是 MBCS 和 Unicode 感知; CompareNoCase 也區分大小寫。 Collate的 方法是 CString 區分地區設定,而且通常比 慢 Compare 。 只有在您必須遵守目前地區設定所指定的排序規則時,才使用 Collate

下表顯示 C 執行時間程式庫中可用的 CString 比較函式及其相等的 Unicode/MBCS 可攜式函式。

CString 函式 MBCS 函式 Unicode 函式
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

類別 CStringT 範本會定義關係運算子( < 、=、 < =、 >> ==和 !=),可供 使用 CString 。 您可以使用這些運算子來比較兩個 CStrings ,如下列範例所示。

CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);

轉換 CString 物件

如需將 CString 物件轉換成其他字串類型的相關資訊,請參閱 如何:在各種字串類型 之間轉換。

搭配 wcout 使用 CString

若要搭配使用 CString, wcout 您必須明確地將 物件轉換成 , const wchar_t* 如下列範例所示:

CString cs("meow");

wcout << (const wchar_t*) cs << endl;

如果沒有轉換, cs 則會被視為 void* ,並 wcout 列印 物件的位址。 此行為是由範本引數推算與多載解析之間的細微互動所造成,其本身正確且符合 C++ 標準。

另請參閱

字串 (ATL/MFC)
CStringT 類別
範本特製化
如何:在各種字串類型之間轉換