第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在C ++ 11中string :: c_str()不再為null終止嗎?

在C ++ 11中string :: c_str()不再為null終止嗎?

C++
開(kāi)心每一天1111 2019-12-03 15:07:07
在C ++ 11中,basic_string::c_str它定義為與完全相同basic_string::data,而后者又定義為*(begin() + n)與和*(&*begin() + n)(when 0 <= n < size())完全相同。我找不到任何要求字符串末尾始終包含空字符的內(nèi)容。這是否意味著c_str()不再保證生成以null終止的字符串?
查看完整描述

3 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

現(xiàn)在需要字符串才能在內(nèi)部使用以空值結(jié)尾的緩沖區(qū)。看一下operator[](21.4.5)的定義:


要求: pos <= size()。


返回: *(begin() + pos)如果pos <

  size(),否則返回對(duì)T帶有value 類(lèi)型的對(duì)象的引用charT();參考值不得修改。


回顧c_str(21.4.7.1/1),我們看到它的定義是operator[]:


返回:指針,p這樣in 中p + i == &operator[](i)的每個(gè)指針。i[0,size()]


并且c_str和data都必須為O(1),因此有效地強(qiáng)制實(shí)現(xiàn)使用以空值結(jié)尾的緩沖區(qū)。


此外,正如DavidRodríguez-dribeas在評(píng)論中指出的那樣,返回值要求還意味著您可以&operator[](0)用作的同義詞c_str(),因此終止的空字符必須位于相同的緩沖區(qū)中(因?yàn)?(p + size())必須等于charT());這也意味著即使終止符被延遲初始化,也無(wú)法觀察中間狀態(tài)的緩沖區(qū)。


查看完整回答
反對(duì) 回復(fù) 2019-12-03
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

“歷史”是很久以前,當(dāng)每個(gè)人都在單個(gè)線程中工作,或者至少線程是擁有自己數(shù)據(jù)的工人時(shí),他們?yōu)镃 ++設(shè)計(jì)了一個(gè)字符串類(lèi),該類(lèi)使字符串處理比以前更容易,并且它們重載了運(yùn)算符+連接字符串。


問(wèn)題是用戶將執(zhí)行以下操作:


s = s1 + s2 + s3 + s4;

并且每個(gè)串聯(lián)都會(huì)創(chuàng)建一個(gè)臨時(shí)對(duì)象,該臨時(shí)對(duì)象必須實(shí)現(xiàn)一個(gè)字符串。


因此,有人會(huì)產(chǎn)生“惰性評(píng)估”的頭腦,以便在內(nèi)部可以將所有字符串存儲(chǔ)在某種“繩子”中,直到有人想要將其讀取為C字符串為止,此時(shí)您可以將內(nèi)部表示形式更改為連續(xù)的緩沖區(qū)。


這解決了上述問(wèn)題,但引起了其他麻煩,特別是在多線程世界中,人們期望.c_str()操作為只讀/不會(huì)更改任何內(nèi)容,因此不需要鎖定任何內(nèi)容。在類(lèi)實(shí)現(xiàn)中過(guò)早地進(jìn)行內(nèi)部鎖定,以防萬(wàn)一有人對(duì)它進(jìn)行多線程處理(甚至在沒(méi)有線程標(biāo)準(zhǔn)的情況下)也不是一個(gè)好主意。實(shí)際上,做任何事情都比每次簡(jiǎn)單地復(fù)制緩沖區(qū)要昂貴得多。字符串實(shí)現(xiàn)放棄了“寫(xiě)時(shí)復(fù)制”實(shí)現(xiàn)的相同原因。


因此,做.c_str()一個(gè)真正不變的操作被認(rèn)為是最明智的選擇,但是現(xiàn)在可以“依賴”線程感知的標(biāo)準(zhǔn)嗎?因此,新標(biāo)準(zhǔn)決定明確聲明您可以,因此內(nèi)部表示形式必須包含空終止符。


查看完整回答
反對(duì) 回復(fù) 2019-12-03
  • 3 回答
  • 0 關(guān)注
  • 937 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)