MFC程式設計之CString類

2021-08-20 13:40:09 字數 4159 閱讀 5271

小石這此總結下cstring的使用,在mfc程式設計中,cstring作為我們常用的類。下面介紹下它:

cstring類作為mfc的常用類,當之無愧。可以這樣說,只要是從事mfc開發,基本都會遇到使用cstring類的場合。因為字串的使用比較普遍,而cstring類又提供了對字串的便捷操作,所以它給mfc開發人員帶來了高的開發效率,受到了開發者的歡迎。

一、建構函式

作為乙個類,首先我們第一步肯定是要先去構造cstring(const cstring& stringsrc);,例如

cstring str1(__t("www.daheng-image.com"));
將乙個已經存在的cstring物件stringsrc的內容拷貝到該cstring物件。例如

cstring str1(_t("www.daheng-image.com"));  // 將常量字串拷貝到str1      

cstring str2(str1); // 將str1的內容拷貝到str2

2 第二種建構函式cstring(lpctstr lpch, int nlength),舉個例子如下:

cstring str(_t("www.daheng-image.com"),3); // 構造的字串物件內容為"www"
3 第三種建構函式cstring(tchar ch, int nlength = 1);

cstring str(_t('w'),3);  // str為"www"
二、cstring類的大小寫轉換及順序轉換函式

cstring& makelower();

將字串中的所有大寫字元轉換為小寫字元。

cstring& makeupper();

將字串中的所有小寫字元轉換為大寫字元。

cstring& makereverse();

將字串中所有字元的順序顛倒。

例如:

cstring str(_t("shirunfa"));   

str.makelower(); // str為"shirunfa"

str.makeupper(); // str為"shirunfa"

str.makereverse(); // str為"afnurihs"

三、 cstring物件的連線

多個cstring物件的連線可以通過過載運算子+、+=實現。例如:

cstring str(_t("daheng-image"));      // str內容為"daheng-image"   

str = _t("www.") + str + _t("."); // str為"www.daheng-image."

str += _t("com"); // str為"www.daheng-image.com"

四、 cstring物件的比較

cstring物件的比較可以通過==、!=、<、>、<=、>=等過載運算子實現,也可以使用compare和comparenocase成員函式實現。

int compare(pcxstr psz) const;

將該cstring物件與psz字串比較,如果相等則返回0,如果小於psz則返回值小於0,如果大於psz則返回值大於0。

int comparenocase(pcxstr psz) const throw();

此函式與compare功能類似,只是不區分大小寫。

例如:

cstring str1 = _t("shirunfa");   

cstring str2 = _t("shirunfa");

if (str1 == str2)

if (0 == str1.comparenocase(str2))

五、. cstring物件字串的提取操作

cstring left(int ncount) const;

提取該字串左邊ncount個字元的子字串,並返回乙個包含這個子字串的拷貝的cstring物件。

cstring right(int ncount) const;

提取該字串右邊ncount個字元的子字串,並返回乙個包含這個子字串的拷貝的cstring物件。

cstring mid(int ifirst,int ncount) const;

提取該字串中以索引ifirst位置開始的ncount個字元組成的子字串,並返回乙個包含這個子字串的拷貝的cstring物件。

cstring mid(int ifirst) const;

提取該字串中以索引ifirst位置開始直至字串結尾的子字串,並返回乙個包含這個子字串的拷貝的cstring物件。

例如:

cstring str1 = _t("shirunfa");   

cstring str2 = str1.left(3); // str2為"shi"

str2 = str1.right(2); // str2為"fa"

str2 = str1.mid(1,3); // str2為"hir"

str2 = str1.mid(5); // str2為"nfa"

六、 cstring物件字串的查詢操作

int find(pcxstr pszsub,int istart=0) const throw( );

int find(xchar ch,int istart=0) const throw( );

在cstring物件字串的istart索引位置開始,查詢子字串pszsub或字元ch第一次出現的位置,如果沒有找到則返回-1。

int findoneof(pcxstr pszcharset) const throw( );

查詢pszcharset字串中的任意字元,返回第一次出現的位置,找不到則返回-1。

int reversefind(xchar ch) const throw();

從字串末尾開始查詢指定的字元ch,返回其位置,找不到則返回-1。這裡要注意,儘管是從後向前查詢,但是位置的索引還是要從開始算起。

cstring str = _t("shirunfa");   

int nindex1 = str.find(_t("ru")); // nindex1的值為2

int nindex2 = str.findoneof(_t("hun")); // nindex2的值為1

int nindex3 = str.reversefind(_t('a')); // nindex3的值為7

七 cstring類物件字串的替換與刪除

int replace(pcxstr pszold,pcxstr psznew);

用字串psznew替換cstring物件中的子字串pszold,返回替換的字元個數。

int replace(xchar chold,xchar chnew);

用字元chnew替換cstring物件中的字元chold,返回替換的字元個數。

int delete(int iindex,int ncount = 1);

從字串中刪除iindex位置開始的ncount個字元,返回刪除操作後的字串的長度。

int remove(xchar chremove);

刪除字串中的所有由chremove指定的字元,返回刪除的字元個數。

例如:

cstring str = _t("shirunfa");   

int n1 = str.replace(_t('s'), _t('j')); // str為"jhirunfa",n1為1

int n2 = str.delete(1,2); // str為"srunfa",n2為6

int n3 = str.remove(_t('a')); // str為"shirunf",n3為1

CSocket類網路程式設計 MFC

visual c 的mfc提供了csocket類用來實現網路通訊。下面介紹vc 在windows 95中實現socket的 csocket 類相關成員函式 這些成員函式實際上是從casyncsocket 類繼承來的 的使用。1 bool create uint nsocketport 0,int n...

MFC網路程式設計之 TCP伺服器

平台 windows10企業版,vs2013 1.工程建立,基於對話方塊,新增windows socket 支援 2.從csocket派生出自定義監聽socket類sersoc,建立物件 sersoc m socket注意概念 伺服器的監聽socket永遠只是用來接受連線請求。執行通訊,即資料收發時...

MFC網路程式設計之 TCP客戶端

平台 windows10企業版,vs2013 1.工程建立,基於對話方塊,新增windows socket 支援 2.新增通訊socket類,繼承於csockets 3.建立socket,m sock.create 4.與處於監聽狀態的伺服器進行連線 m sock.connect t 127.0.0...