1. 程式人生 > 程式設計 >C++獲取字串長度的幾個函式方式

C++獲取字串長度的幾個函式方式

C/C++ strlen(str)、str.length()、str.size()、sizeof(str)都可以求字串長度。

其中str.length()、str.size()、sizeof(str)是用於求string類物件的成員函式

strlen(str)是用於求字元陣列的長度,其引數是char*。

補充知識:獲取字串長度的函式sizeof()、strlen()、length()、size()詳解和區別

在C++中計算長度的函式有四種,它們分別是sizeof() ,size(),strlen(),str.length()。

一. sizeof()和strlen()兩者區別:

1)sizeof操作符的結果型別是size_t,該型別保證能容納實現所建立的最大物件的位元組大小。

2)sizeof是運算子,strlen是函式。

3)sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以''\0''結尾的。

4)sizeof在編譯時期就計算出來,strlen在執行之後才能計算出來。

5)strlen計算字串的具體長度(只能是字串),不包括字串結束符。返回的是字元個數。sizeof計算聲明後所佔的記憶體數(位元組大小),不是實際長度。

舉例:

1)char* ss = "0123456789";

sizeof(ss)為4,ss是指向字串常量的字元指標,sizeof 獲得的是指標所佔的空間,則為4

sizeof(*ss)為1,*ss是第一個char字元,則為1

2)char ss[] = "0123456789";

sizeof(ss)為11,ss是陣列,計算到'\0'位置,因此是(10+1)

sizeof(*ss)為1,*ss是第一個字元

3)char ss[100] = "0123456789";

sizeof(ss)為100,ss表示在記憶體中預分配的大小,100*1

strlen(ss)為10,它的內部實現用一個迴圈計算字串的長度,直到'\0'為止。

4)int ss[100] = "0123456789";

sizeof(ss)為400,ss表示在記憶體中預分配的大小,100*4

strlen(ss)錯誤,strlen引數只能是char*,且必須是以'\0'結尾

5)char[] a={'a','b','c'};

sizeof(a)的值應該為3。

char[] b={"abc"};

sizeof(b)的值應該是4。

6)若string str={'a','c','\0','X'};

那麼sizeof(str)為5,strlen(str)為3。

二. string中的length()和size()

c++中,在獲取字串長度時,size()函式與length()函式作用相同。

例如:string str = “wang”

則,str.length() = 4。

除此之外,size()函式還可以獲取vector型別的長度。

例如:vector < int> num(15,2)

則,num.size() = 15。

以上這篇C++獲取字串長度的幾個函式方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。