共用方式為


基本作業 CString

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

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

  • 在 CString 存取個別字元。

  • 串連兩個 CString 物件

  • 比較物件 CString

  • 轉換成 CString 物件

Class CString 根據類別樣板 CStringT 類別CStringCStringTtypedef 。 正確, CStringCStringT的 明確特製化的typedef ,是一種常見方式使用類別樣板定義類別。 相同的已定義的類別是 CStringACStringW。 如需明確特製化的詳細資訊,請參閱 類別樣板執行個體化

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

CStringCStringACStringW 一切取得 CStringT 定義的方法和運算子的一組為其支援的字串資料的使用。 某些方法重複的和,在某些情況下,以上的 C 執行階段程式庫的資料服務。

注意: CString 為原生類別。 對於要用在 C++. ++/CLI Managed 專案的資料類別,請使用 System.String

若要從標準 C 常值字串的物件 CString

如同您可以指派一 CString 物件與另一個,您就可以將 C-Style 常值字串加入至 CString

  • 指派 C++. 常值字串的值為 CString 物件。

    CString myString = _T("This is a test");   
    
  • 指派指定的 CString 的值至另一 CString 物件。

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

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

    注意事項注意事項

    撰寫應用程式,使其可為 Unicode 或 ANSI 為使用 _T 巨集,,程式碼的常值字串。如需詳細資訊,請參閱 Unicode 和多位元組字元集 (MBCS) 的支援

在 CString 存取個別字元。

您可以使用 GetAtSetAt 方法,存取在 CString 物件的個別字元。 您也可以使用陣列元素或註標 (Subscript),運算子 () 而不是 GetAt 取得個別字元。 (這是由索引類似存取陣列元素,介於標準 C-Style 字串)。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 也不區分大小寫。 CStringCollate 方法會 Compare與地區設定 (Locale) 通常慢。 使用只有必須遵守排序規則由目前地區設定的 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 對其他資料型別的詳細資訊,請參閱 HOW TO:在各種字串型別之間轉換

使用 wcout 的 CString

如下列範例所示,若要使用 CString 和 wcout 必須明確轉型成 const wchar_t* 的物件:

CString cs("meow");
  wcout << (const wchar_t*) cs << endl;

沒有型別轉換, void* 和 wcout 列印物件的位址, cs 視為。 這個行為是由其本身正確且符合和 C++ 標準樣板引數推算和多載解析之間的細微互動而產生。

請參閱

參考

CStringT 類別

類別樣板執行個體化

類別樣板的明確特製化

部分特製化的類別樣板 (C++)

概念

HOW TO:在各種字串型別之間轉換

其他資源

字串 (來源)