C++如何切割String對(duì)象的方法_第1頁(yè)
C++如何切割String對(duì)象的方法_第2頁(yè)
C++如何切割String對(duì)象的方法_第3頁(yè)
C++如何切割String對(duì)象的方法_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第C++如何切割String對(duì)象的方法目錄核心函數(shù)find函數(shù)substr函數(shù)數(shù)值轉(zhuǎn)換輸入樣例輸出樣式C++相較于Java,Python并沒(méi)有提供的字符串分割的函數(shù)split,因此需要自己進(jìn)行編寫(xiě)。在實(shí)際的工作中這一功能會(huì)被經(jīng)常使用,所以進(jìn)行簡(jiǎn)單的記錄一下。

核心函數(shù)

代碼實(shí)現(xiàn)的函數(shù)是調(diào)用String庫(kù)中的find函數(shù)和substr函數(shù)。

find函數(shù)

size_typefind(constbasic_stringstr,size_typepos=0)

find函數(shù)完成最簡(jiǎn)單的搜索,它查找參數(shù)指定的字符串(str),若找到返回一個(gè)String::size_type的值,用來(lái)表示匹配發(fā)生位置的下標(biāo)。若未找到,則返回一個(gè)名為string::npos的static成員。C++標(biāo)準(zhǔn)庫(kù)將npos定義為一個(gè)conststring::size_type類(lèi)型,并初始化值為-1。由于npos是一個(gè)unsigned類(lèi)型,此初值意味著npos等于任何string最大的可能大小。

參數(shù)str,pos表示從pos位置中開(kāi)始查找str

除了find操作,string還支持以下的操作

str.find(args)查找str中args第一次出現(xiàn)的位置str.rfind(args)查找str中args最后一次出現(xiàn)的位置str.find_first_of(args)查找str中args中第一個(gè)字符第一次出現(xiàn)的位置str.find_last_of(args)查找str中args中第一個(gè)字符最后一次出現(xiàn)的位置str.find_first_not_of(args)查找str中args中第一個(gè)不在atgs中的字符str.find_last_not_of(args)查找str中args中最后一個(gè)不在atgs中的字符

substr函數(shù)

stringsubstr(size_typepos=0,size_typecount=npos)

substr主要功能是復(fù)制字符串,要求從指定的位置pos開(kāi)始,并具有指定的長(zhǎng)度count。若未指定長(zhǎng)度或者pos+count源字符串的長(zhǎng)度,則子字符串將延續(xù)到源字符串的結(jié)尾

數(shù)值轉(zhuǎn)換

由于本次樣例中需要將string類(lèi)型轉(zhuǎn)換為int類(lèi)型,我們簡(jiǎn)單介紹以下常見(jiàn)的string的數(shù)值轉(zhuǎn)換

int轉(zhuǎn)換成string

inti=42;

strings=to_string(i);

string轉(zhuǎn)換成int

stringstr='42';

stoi(str);

輸入樣例

nums=[3,2,4],target=6

輸出樣式

324

6

代碼實(shí)現(xiàn)

#includeiostream

#includevector

#includestring

usingnamespacestd;

voidspiltStr(stringstr,conststringsplit,vectorstringstrlist)

strlist.clear();

if(str=="")

return;

stringstrs=str+split;

size_tpos=strs.find(split);

intsteps=split.size();

while(pos!=strs.npos)

{

//substr復(fù)制字符串,起始位置,復(fù)制字符數(shù)目

stringtemp=strs.substr(0,pos);

strlist.push_back(temp);

strs=strs.substr(pos+steps,strs.size());

pos=strs.find(split);

}

intmain()

vectorint

vectorstringstrlist;

stringinputStr;

stringtempStr;

inttarget;

getline(cin,inputStr);

if(inputStr=="")

{

return0;

}

//分割輸入的字符串

spiltStr(inputStr,"[",strlist);

spiltStr(strlist[1],"]",strlist);

spiltStr(strlist[0],",",strlist);

//將vectorstringspiltStr的數(shù)值寫(xiě)入vectorintnums中

for(autoi:strlist)

{

num.push_back(stoi(i));

}

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論