欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
cstring,string,char*的綜合比較(一)

CString,string,char*的綜合比較(一)

yuwei - 轉載 (2004-11-16 16:25:00)

  

(一) 概述

string和CString均是字符串模板類(lèi),string為標準模板類(lèi)(STL)定義的字符串類(lèi),已經(jīng)納入C++標準之中;

CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)為Visual C++中最常用的字符串類(lèi),繼承自CSimpleStringT類(lèi),主要應用在MFC和ATL編程中,主要數據類(lèi)型有char(應用于A(yíng)NSI),wchar_t(unicode),TCHAR(ANSI與unicode均可);

char*為C編程中最常用的字符串指針,一般以’\0’為結束標志;

(二) 構造

 string是方便的,可以從幾乎所有的字符串構造而來(lái),包括CString和char*;

 CString次之,可以從基本的一些字符串變量構造而來(lái),包括char*等;

 char*沒(méi)有構造函數,僅可以賦值;

 舉例:

char* psz = “joise”;

CString cstr( psz );

string str( cstr );

(三) 運算符重載

a) operator=

 string是最方便的,幾乎可以直接用所有的字符串賦值,包括CString和char*;

 CString次之,可以直接用些基本的字符串賦值,包括char*等;

 char*只能由指針賦值,并且是極危險的操作,建議使用strcpy或者memcpy,而且char*在聲明的時(shí)候如未賦初值建議先設為NULL,以避免野指針,令你抓狂;

 舉例:

char *psz = NULL;

psz = new char[10]; //當然,以上的直接寫(xiě)成char *psz = new char[10];也是一樣

memset( psz, 0, 10 );

strcpy( psz, “joise” ); 

CString cstr;

cstr = psz;

string str;

str = psz;

str = cstr;

delete []psz;

b) operator+

string與CString差不多,可以直接與char*進(jìn)行加法,但不可以相互使用+運算符,即string str = str + cstr是非法的,須轉換成char*;

char*沒(méi)有+運算,只能使用strcat把兩個(gè)指針連在一起;

 舉例:

char* psz = “joise”;

CString cstr = psz;

cstr = cstr + psz;

string str = psz;

str = str + str + psz;

strcat( psz, psz );

strcat( psz, cstr );//合法

strcat( psz, str );//非法,由此可見(jiàn),CString可自動(dòng)轉換為const char*,而string不行

c) operator +=

 string是最強大的,幾乎可以與所有的字符串變量+=,包括CString和char*;

 CString次之,可以與基本的一些字符串變量進(jìn)行+=而來(lái),包括char*等;

char*沒(méi)有+=運算符,只能使用strcat把兩個(gè)指針連在一起;

d) operator[]

 CString最好,當越界時(shí)會(huì )拋出斷言異常;

 string與char*下標越界結果未定義;

舉例:

char* psz = “joise”;

CString cstr = psz;

cout << cstr[8];

string str = psz;

cout << str[8];

cout << psz[8];

e) operator== 、operator!=、operator> 、operator< 、operator>= 、perator<=

 CString與string之間不可以進(jìn)行比較,但均可以與char*進(jìn)行比較,并且比較的是值,而不是地址;

cout << ( psz == cstr );

cout << ( psz == str );

cout << ( str == psz );

cout << ( cstr == psz );//以上代碼返回均為1

(四) 常用算法

a) 查找

作用char*stringCString
查找指定值strchr
strstr
strrstr
strspn
findFind
第一個(gè)匹配的值 fild_first_ofFindOneOf
從后面開(kāi)始查找  ReserveFind
指定匹配方式 find_if 

注:find_if中是把范圍內的值挨個(gè)代入匹配函數直至返回true

b) 比較

作用char*stringCString
查找指定值(區分大小寫(xiě))strcmp
strncmp
strcoll
_strncoll
operator<
operator>
operator<= 
operator>=
operator==
operator!=
Collate

Compare
查找指定值(不區分大小寫(xiě))_stricmp
_strnicmp
_stricoll
_strnicoll
 CollateNoCase

CompareNoCas

注:返回值如果<0則前面的值小于后面的值,反之亦然

c) 替換

作用char*stringCString
查找指定值_strset
_strnset
replace
replace_copy
replace_copy_if
replace_if
Replace

d) 插入

作用char*stringCString
查找指定值 insertInsert
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
CString與string、char*的區別和轉換
CString/string 區別及其轉化
關(guān)于 c_str()
istringstream、ostringstream、stringstream 類(lèi)介紹 .
c++中c_str()的用法詳解
C學(xué)習心得
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久