關於 String 型別介紹

2021-10-09 02:21:08 字數 2548 閱讀 1464

表示可變長的字串行,使用string型別前必須首先包含string標頭檔案

string a1;              //預設初始化

string a2(a1);             //a2是a1的副本

string a3=a1;                  //等價於a3(a1),a3是a1的副本

string a4("hello world");           //a4是字面值"hello world"的副本

string a5="hello world";          //等價於a5("hello world")

string a6(n,'c');              //把a6初始化為由連續n個字元c組成的串

**演示:

#includeusing namespace std;

#includeint main()

os<>s;                //從is中讀取字串賦給s,字串以空白1分割,返回is

getline(is,s);            //從is中讀取一行賦給s,返回is

s.empty()           //s為空返回true,否則返回false

s.size();       //返回s中字元的個數

s[n];                  //返回s中第n個字元的引用,位置n從0記起

s1+s2;          //返回s1和s2連線後的結果

s1=s2            //用s2的副本代替s1中原來的字元

s1==s2               //判斷s1和s2是否完全相等

s1!=s2         //判斷s1和s2是否不相等

<,<=,>,>=             利用字典中的順序進行比較

eg:輸入「hello world」;則讀取的為hello,而空格後的world則被忽略

此時可以用getline讀取。

size的返回值是乙個string::size_type型別的值,他是乙個無符號型別的值,而且足夠存放下任何string物件的大小。c++11中允許用auto或者decltype來推斷變數的型別

auto  len =line.size();      //len的型別是string::size_type

由於size函式返回的是乙個無符號的整型,假設n是乙個負值的int,則len注:如果一條表示式中已經有了size()函式就不要使用int了,這樣可以避免int和unsugned可能帶來的問題

必須確保每個加法運算子(+)的兩側的運算物件至少有乙個時string

string a1 = "hello";

string a2=a1+"  sdsa";     //正確,一條語句中至少有乙個string型別

string a3 = "asda"+"asds"         //錯誤,沒有string型別

string a4 = a1+"hello"+"world"         //正確

string a5="hello"+"world"+a1;        //錯誤

當有多個加號時,他的工作機理和連續輸入連續輸出是一樣的

a4可以變為a4=(a1+"hello")+"world";

第乙個擴號仍然正確

a5可以變為a5=("hello"+"world")+a1;

第乙個擴號內無string型別,所以不正確

isalnum(c)      //當c是字母或者數字時為真

isalpha(c)       //當c是字母時為真

iscntrl(c)           //當c是控制字母時為真

isdigit(c)      //當c是數字時為真

isgraph(c)       //當c不是空格但可以列印時為真

islower(c)        //當c是小寫字母時為真

isprint(c)           //當c是可列印字元時為真

ispunct(c)         //當c是標點符號時為真

isspace(c)         //當c是空白時為真

isupper(c)             //當c是大寫字母時為真

isxdigit(c)       //當c是十六進製制數字時為真

tolower(c)          //如果c是大寫字母,輸出對應的小寫字母;否則原樣輸出

toupper(c)          //如果c是小寫字母,輸出對應的大寫字母;否則原樣輸出

使用for語句處理string字串

eg:

#includeusing namespace std;

#includeint main()

cout << s << endl;

system("pause");

return 0;

}

關於string是值型別還是引用型別

當然了,string本質上肯定是引用型別,但是這個特殊的類卻表現出值型別的特點 判斷相等性時,是按照內容來判斷的,而不是位址 它肯定是乙個引用型別沒錯,兩個方面來看 1.class string繼承自object,而不是system.valuetype int32這樣的則是繼承於system.val...

關於string是值型別還是引用型別

當然了,string本質上肯定是引用型別,但是這個特殊的類卻表現出值型別的特點 判斷相等性時,是按照內容來判斷的,而不是位址 它肯定是乙個引用型別沒錯,兩個方面來看 1.class string繼承自object,而不是system.valuetype int32這樣的則是繼承於system.val...

Redis介紹 String型別之BIT(五)

本文時redis系列的第五篇文章,了解前面的文章有助於更好的理解本文 redis介紹 linux系統下的安裝 一 redis介紹 通用命令介紹 二 redis介紹 五大資料型別介紹 三 redis介紹 string資料型別介紹 四 bit相關的命令是指bitcount bitfield bitop ...