C++獲取字符串長(zhǎng)度的幾個(gè)函數(shù)方式
C/C++ strlen(str)、str.length()、str.size()、sizeof(str)都可以求字符串長(zhǎng)度。
其中str.length()、str.size()、sizeof(str)是用于求string類(lèi)對(duì)象的成員函數(shù)
strlen(str)是用于求字符數(shù)組的長(zhǎng)度,其參數(shù)是char*。
補(bǔ)充知識(shí):獲取字符串長(zhǎng)度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別
在C++中計(jì)算長(zhǎng)度的函數(shù)有四種,它們分別是sizeof() ,size(),strlen(),str.length()。
一. sizeof()和strlen()兩者區(qū)別:
1)sizeof操作符的結(jié)果類(lèi)型是size_t,該類(lèi)型保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。
2)sizeof是運(yùn)算符,strlen是函數(shù)。
3)sizeof可以用類(lèi)型做參數(shù),strlen只能用char*做參數(shù),且必須是以''\0''結(jié)尾的。
4)sizeof在編譯時(shí)期就計(jì)算出來(lái),strlen在運(yùn)行之后才能計(jì)算出來(lái)。
5)strlen計(jì)算字符串的具體長(zhǎng)度(只能是字符串),不包括字符串結(jié)束符。返回的是字符個(gè)數(shù)。sizeof計(jì)算聲明后所占的內(nèi)存數(shù)(字節(jié)大?。?,不是實(shí)際長(zhǎng)度。
舉例:
1)char* ss = "0123456789";
sizeof(ss)為4,ss是指向字符串常量的字符指針,sizeof 獲得的是指針?biāo)嫉目臻g,則為4
sizeof(*ss)為1,*ss是第一個(gè)char字符,則為1
2)char ss[] = "0123456789";
sizeof(ss)為11,ss是數(shù)組,計(jì)算到'\0'位置,因此是(10+1)
sizeof(*ss)為1,*ss是第一個(gè)字符
3)char ss[100] = "0123456789";
sizeof(ss)為100,ss表示在內(nèi)存中預(yù)分配的大小,100*1
strlen(ss)為10,它的內(nèi)部實(shí)現(xiàn)用一個(gè)循環(huán)計(jì)算字符串的長(zhǎng)度,直到'\0'為止。
4)int ss[100] = "0123456789";
sizeof(ss)為400,ss表示在內(nèi)存中預(yù)分配的大小,100*4
strlen(ss)錯(cuò)誤,strlen參數(shù)只能是char*,且必須是以'\0'結(jié)尾
5)char[] a={'a','b','c'};
sizeof(a)的值應(yīng)該為3。
char[] b={"abc"};
sizeof(b)的值應(yīng)該是4。
6)若string str={'a','b','c','\0','X'};
那么sizeof(str)為5,strlen(str)為3。
二. string中的length()和size()
c++中,在獲取字符串長(zhǎng)度時(shí),size()函數(shù)與length()函數(shù)作用相同。
例如:string str = “wang”
則,str.length() = 4。
除此之外,size()函數(shù)還可以獲取vector類(lèi)型的長(zhǎng)度。
例如:vector < int> num(15,2)
則,num.size() = 15。
以上這篇C++獲取字符串長(zhǎng)度的幾個(gè)函數(shù)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用C++開(kāi)發(fā)一個(gè)protobuf動(dòng)態(tài)解析工具
數(shù)據(jù)庫(kù)中存儲(chǔ)的protobuf序列化的內(nèi)容,有時(shí)候查問(wèn)題想直接解析查看內(nèi)容。很多編碼在網(wǎng)上很容易找到編解碼工具,但protobuf沒(méi)有找到編解碼工具,可能這樣的需求比較少吧,那就自己用C++實(shí)現(xiàn)一個(gè),感興趣的可以了解一下2023-01-01
解析VC中創(chuàng)建DLL,導(dǎo)出全局變量,函數(shù)和類(lèi)的深入分析
本篇文章是對(duì)VC中創(chuàng)建DLL,導(dǎo)出全局變量,函數(shù)和類(lèi)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
sublime text3搭建配置c語(yǔ)言編譯環(huán)境的詳細(xì)圖解教程(小白級(jí))
這篇文章主要介紹了sublime text3搭建配置c語(yǔ)言編譯環(huán)境,詳細(xì)圖解,小白教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
深入解析設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用
這篇文章主要介紹了設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用,通常適配器模式可以細(xì)分為類(lèi)適配器和對(duì)象適配器兩種情況,需要的朋友可以參考下2016-03-03
Visual?Studio2022的完全卸載及安裝到D盤(pán)的操作方法
這篇文章主要介紹了Visual?Studio2022的完全卸載以及完全安裝到D盤(pán),因?yàn)閂S如果隨便寫(xiě)在會(huì)有很多很多的亂七八糟的東西掉出來(lái),所以我們選擇制式一點(diǎn)的卸載方式,需要的朋友可以參考下2022-09-09

