string和basic string的關係

2021-08-11 15:23:52 字數 775 閱讀 5996

寫這篇部落格的原因是在乙個專案中看到str.find("abc") != std::string::npos這麼一句**,在印象中,find返回值不是這麼複雜,如果沒找到返回值是-1,直接和-1做判斷就可以str.find("abc") != -1,之後就開始了檢視msdn之路,才發現string不是那麼單純。如果要把標準c++ string轉換成c style string可以用成員函式basic_string::c_str()。c style string可以簡單的理解為char型別陣列以』\0』結尾,例如char *cstr = "cstr";或者char cstr1 = "cstr";,char cstr1[5] = "cstr";\\由於c style string結尾有'\0'因此如果要明確陣列大小的話,需要比字串中字元個數多1。

簡單來說basic_string是乙個模版類,string是模版形參為char的basci_string模版類的型別定義,即typedef

typedef basic_string, allocator >

string;

而npos,是初始化為-1表示沒有找到:

static

const size_type npos = -1;

參考連線:

basic_string參考

string參考

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string 對映為 framework的 string。如...

String和string的區別

最近老看見有人在論壇上問string和string有什麼區別,答案五花八門差點兒沒讓我背過氣去,乾脆放到blog上來,論壇上就貼位址了 首先,在一般情況下,string和string是一樣的,但是他們也存在如下區別 1 string始終代表 system.string 1.x 或 system.st...

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string對映為framework的string。如果用s...