国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++中求string類型字符串長(zhǎng)度的三種方法

這篇具有很好參考價(jià)值的文章主要介紹了C++中求string類型字符串長(zhǎng)度的三種方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.length()成員函數(shù)

length()函數(shù)是string的內(nèi)置成員方,用于返回string類型字符串的實(shí)際長(zhǎng)度。
length()函數(shù)聲明:

// 返回 string 長(zhǎng)度,單位字節(jié)
size_t length() const noexcept;

示例1:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string s= "hello world!";
    cout << s.length() << endl;
    return 0;
}

c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言

2.size()成員函數(shù)

size()函數(shù)與length()一樣,沒(méi)有本質(zhì)區(qū)別。string類剛開(kāi)始只有l(wèi)ength()函數(shù),延續(xù)了C語(yǔ)言的風(fēng)格。引入STL之后,為了兼容又加入了size,這樣就可以方便的使用于STL的算法。

size()函數(shù)聲明:

// 返回 string 長(zhǎng)度,單位字節(jié)。作用等同于 length()
size_t size() const noexcept;

示例2:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string s= "hello world!";
    cout << s.size() << endl;
    return 0;
}

c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言

3.借助strlen()函數(shù)

strlen函數(shù):計(jì)算字符串str的長(zhǎng)度,從字符的首地址開(kāi)始遍歷,以 ‘\0’ 為結(jié)束標(biāo)志,然后將計(jì)算的長(zhǎng)度返回,計(jì)算的長(zhǎng)度并不包含’\0’。
因?yàn)?strlen() 函數(shù)是用于 C 風(fēng)格字符串的,因此要使用 c_str() 成員函數(shù)來(lái)獲取 string 對(duì)象的 C 風(fēng)格字符串表示,然后將它傳遞給 strlen() 函數(shù)。

strlen()函數(shù)聲明:

// C 標(biāo)準(zhǔn)庫(kù)函數(shù),返回C風(fēng)格字符串長(zhǎng)度,單位字節(jié) size_t
strlen ( const char * str );
const char * str常量指針,指針的指向可以更改,但是指針指向的值不能更改。

示例3:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    string s= "hello world!";
    cout << strlen(s.c_str()) << endl;
    return 0;
}

c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言

4.注意事項(xiàng)

(1)length()方法和size()方法是不受結(jié)束標(biāo)志‘\0’ ,返回的是字符串的實(shí)際長(zhǎng)度,而strlen() 函數(shù)遇到結(jié)束標(biāo)志‘\0’就停止,返回的是遇到的第一個(gè)結(jié)束標(biāo)志前的字符串長(zhǎng)度。下面看一個(gè)例子:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    char buf[10] = { 0 };
    buf[0] = 'a';
    buf[2] = 'v';
    buf[3] = 'h';
    buf[4] = '\0';
    string s(buf, 6);
    cout << "s:" << s << endl;
    cout << "length方法:" << s.length() << endl;
    cout << "size方法:" << s.size() << endl;
    cout << "strlen方法:"<< strlen(s.c_str()) << endl;
    return 0;
}

注意:char buf[10] = { 0 }是只給buf數(shù)組的第一個(gè)元素賦結(jié)束標(biāo)志’\0‘,剩余的9個(gè)元素沒(méi)進(jìn)行賦值操作,也都為結(jié)束標(biāo)志’\0’。

c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言
從結(jié)果中可以看到,length()和size()方法返回的是字符串的實(shí)際長(zhǎng)度,而strlen方法則是受到’\0‘的影響進(jìn)行截?cái)嗔恕?/p>

(2)此外這里還有一個(gè)坑需要注意:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    string s= "hello\0 world!";
    cout << "length方法:" << s.length() << endl;
    cout << "size方法:" << s.size() << endl;
    cout << "strlen方法:"<< strlen(s.c_str()) << endl;
    return 0;
}

按照上面的理論,這里應(yīng)該輸出:

length方法:13
size方法:13
strlen方法:5

才對(duì),但是實(shí)際運(yùn)行結(jié)果為:
c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言
這是為何呢?

實(shí)際上,string是C++的一個(gè)類,在string s= “hello\0 world!”;這行代碼中,它的構(gòu)造函數(shù)是借助了strlen函數(shù)實(shí)現(xiàn)的

for(int i = 0; i < strlen(s);i++)
{
/
}

因此,實(shí)際上s字符串只取到了’\n‘前面的字符串,后面的都被截?cái)嗔?,我們可以輸出看一下?mark hidden color="red">文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-731462.html

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    string s= "hello\0 world!";
    cout << s << endl;
    return 0;
}

c++ string長(zhǎng)度,c++,開(kāi)發(fā)語(yǔ)言
因此,采用string直接定義的字符串利用length()方法和size()方法時(shí),實(shí)際的長(zhǎng)度和strlen()方法一樣,但是其中的原理是不同的。在弄清原理后,就很好區(qū)分這三種方法了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-731462.html

到了這里,關(guān)于C++中求string類型字符串長(zhǎng)度的三種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • golang 類型轉(zhuǎn)換interface轉(zhuǎn)字符串string

    方式一和方式二適用于interface和各種轉(zhuǎn)換 方式三如果需要將一個(gè)普通的類型轉(zhuǎn)換成字符串,可以使用 strconv 包中的相關(guān)函數(shù)。例如,將一個(gè)整數(shù)轉(zhuǎn)換成字符串:

    2024年02月12日
    瀏覽(24)
  • C# 把字符串(String)格式轉(zhuǎn)換為DateTime類型方法

    Convert.ToDateTime(string)? 注意:string格式有要求,必須是yyyy-MM-dd hh:mm:ss 方式二:DateTime.Parse(string) 參考:將字符串轉(zhuǎn)換為 DateTime | Microsoft Learn DateTime.Tostring()//這個(gè)轉(zhuǎn)換之后是YYYY/MM/DD HH:MM:SS DateTime.ToShortString()//這個(gè)轉(zhuǎn)換之后是YYYY/MM/DD Convert.ToDateTime(string)//string是你要轉(zhuǎn)換成時(shí)間

    2024年02月09日
    瀏覽(27)
  • Rust 標(biāo)準(zhǔn)庫(kù)字符串類型String及其46種常用方法

    Rust 標(biāo)準(zhǔn)庫(kù)字符串類型String及其46種常用方法

    Rust主要有兩種類型的字符串:str和String str 由[u8]表示,UTF-8編碼的字符串的引用,字符串字面值,也稱作字符串切片。&str用于查看字符串中的數(shù)據(jù)。它的大小是固定的,即它不能調(diào)整大小。 String String 類型來(lái)自標(biāo)準(zhǔn)庫(kù),它是可修改、可變長(zhǎng)度、可擁有所有權(quán)的同樣使用UTF

    2024年02月07日
    瀏覽(42)
  • 【C++ OJ練習(xí)】5.字符串最后一個(gè)單詞的長(zhǎng)度

    【C++ OJ練習(xí)】5.字符串最后一個(gè)單詞的長(zhǎng)度

    字符串最后一個(gè)單詞的長(zhǎng)度_牛客題霸_??途W(wǎng) 倒著找第一個(gè)空格的下標(biāo) 用下標(biāo)之間的差來(lái)計(jì)算 ?【C++ OJ練習(xí)】5.字符串最后一個(gè)單詞的長(zhǎng)度 完

    2024年02月13日
    瀏覽(31)
  • 【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    目錄 字符串相乘 題面 錯(cuò)誤記錄 Way1 拆分成“先乘后加” 思路 實(shí)現(xiàn) 時(shí)空復(fù)雜度分析 反思 Way2 用數(shù)組 思路 實(shí)現(xiàn) 時(shí)空復(fù)雜度分析 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)字符串中的單詞 題面 錯(cuò)誤記錄 思路1 遍歷找單詞 實(shí)現(xiàn) 思路2 暴力解法 實(shí)現(xiàn) 力扣(LeetCode)官網(wǎng) - 全球極客摯愛(ài)的技術(shù)成長(zhǎng)平

    2024年02月07日
    瀏覽(25)
  • List<Long> 類型數(shù)據(jù)轉(zhuǎn)為string字符串類型 jdk1.8新特性

    話不多說(shuō),直接上代碼 這里,我們首先將 ListLong 轉(zhuǎn)換為 StreamLong ,然后使用 map() 方法將每個(gè) Long 類型的元素轉(zhuǎn)換為字符串類型,再使用 Collectors.joining() 方法將所有字符串連接起來(lái)并用逗號(hào)和空格分隔。 需要注意的是, Collectors.joining() 方法返回的是一個(gè)字符串類型的結(jié)果,

    2024年02月13日
    瀏覽(32)
  • C++之string字符串比較方法

    C++之string字符串比較方法

    ???????????????? ??作者主頁(yè):楓霜?jiǎng)??? 系列專欄:C++實(shí)戰(zhàn)寶典 ?? 上一篇: C++之string字符串不同類型間轉(zhuǎn)換 ???????????????? ??逐夢(mèng)編程,讓中華屹立世界之巔。 ??簡(jiǎn)單的事情重復(fù)做,重復(fù)的事情用心做,用心的事情堅(jiān)持做; 字符串可以和類型相同的字

    2024年02月03日
    瀏覽(22)
  • C++ string判斷是否包含子字符串

    C++ string判斷是否包含子字符串

    C++的string類提供了字符串中查找另一個(gè)字符串的函數(shù)find。 其重載形式為: 功能為在string對(duì)象中,查找參數(shù)string類型的字符串是否存在,如果存在,返回起始位置。不存在則返回 string::npos 。

    2024年02月02日
    瀏覽(21)
  • C++求字符串長(zhǎng)度————sizeof()、size()、strlen()以及l(fā)ength()詳解

    一、區(qū)分sizeof()和strlen() 首先, sizeof() 【操作數(shù)所占空間的字節(jié)數(shù)大小】是一種c中的 基本運(yùn)算符 。(是操作符,并不是函數(shù))可以以類型、指針、數(shù)組和函數(shù)等作為參數(shù)。 它的功能是:獲得保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。由于在編譯時(shí)計(jì)算,因此 sizeof() 不

    2024年02月02日
    瀏覽(21)
  • vue前端判斷某一個(gè)String類型的集合中是否包含某一個(gè)字符串怎么做

    在上面的代碼中,我們使用 includes() 方法判斷 strList 數(shù)組中是否包含 targetStr 字符串,如果包含則輸出“字符串集合中包含目標(biāo)字符串”,否則輸出“字符串集合中不包含目標(biāo)字符串”。 該博文為原創(chuàng)文章,未經(jīng)博主同意不得轉(zhuǎn)。本文章博客地址:https://cplusplus.blog.csdn.net/a

    2024年02月21日
    瀏覽(97)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包