CString操作指南

字號(hào):

CString 是一種很有用的數(shù)據(jù)類型。它們很大程度上簡化了MFC中的許多操作,使得MFC在做字符串操作的時(shí)候方便了很多。不管怎樣,使用CString有很多特殊的技巧,特別是對(duì)于純C背景下走出來的程序員來說有點(diǎn)難以學(xué)習(xí)。這篇文章就來討論這些技巧。
    使用CString可以讓你對(duì)字符串的操作更加直截了當(dāng)。這篇文章不是CString的完全手冊(cè),但囊括了大部分常見基本問題。
    下面我分別討論。
    1、CString 對(duì)象的連接
    能體現(xiàn)出 CString 類型方便性特點(diǎn)的一個(gè)方面就字符串的連接,使用 CString 類型,你能很方便地連接兩個(gè)字符串,正如下面的例子:
    CString gray("Gray");
    CString cat("Cat");
    CString graycat = gray + cat;
    要比用下面的方法好得多:
    char gray[] = "Gray";
    char cat[] = "Cat";
    char * graycat = malloc(strlen(gray) + strlen(cat) + 1);
    strcpy(graycat, gray);
    strcat(graycat, cat);
    2、格式化字符串
    與其用 sprintf() 函數(shù)或 wsprintf() 函數(shù)來格式化一個(gè)字符串,還不如用 CString 對(duì)象的Format()方法:
    CString s;
    s.Format(_T("The total is %d"), total);
    用這種方法的好處是你不用擔(dān)心用來存放格式化后數(shù)據(jù)的緩沖區(qū)是否足夠大,這些工作由CString類替你完成。
    格式化是一種把其它不是字符串類型的數(shù)據(jù)轉(zhuǎn)化為CString類型的最常用技巧,比如,把一個(gè)整數(shù)轉(zhuǎn)化成CString類型,可用如下方法:
    CString s;
    s.Format(_T("%d"), total);
    我總是對(duì)我的字符串使用_T()宏,這是為了讓我的代碼至少有Unicode的意識(shí),當(dāng)然,關(guān)于Unicode的話題不在這篇文章的討論范圍。_T()宏在8位字符環(huán)境下是如下定義的:
    #define _T(x) x // 非Unicode版本(non-Unicode version)
    而在Unicode環(huán)境下是如下定義的:
    #define _T(x) L##x // Unicode版本(Unicode version)
    所以在Unicode環(huán)境下,它的效果就相當(dāng)于:
    s.Format(L"%d", total);
    如果你認(rèn)為你的程序可能在Unicode的環(huán)境下運(yùn)行,那么開始在意用 Unicode 編碼。比如說,不要用 sizeof() 操作符來獲得字符串的長度,因?yàn)樵赨nicode環(huán)境下就會(huì)有2倍的誤差。我們可以用一些方法來隱藏Unicode的一些細(xì)節(jié),比如在我需要獲得字符長度的時(shí)候,我會(huì)用一個(gè)叫做DIM的宏,這個(gè)宏是在我的dim.h文件中定義的,我會(huì)在我寫的所有程序中都包含這個(gè)文件.