在python里有split函數(shù),比如res_list ="aanbbncc".split("n")
那么res_list就是["aa","bb","cc"]
那么用c++是怎么實(shí)現(xiàn)這樣的功能呢?有沒(méi)有簡(jiǎn)潔高效的,我自己寫(xiě)的太煩鎖了,感覺(jué)有點(diǎn)low,所以來(lái)求教各位大佬。
1、通過(guò)stl實(shí)現(xiàn)
涉及到string類的兩個(gè)函數(shù)find和substr:
1、find函數(shù)
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出現(xiàn)的位置。
參數(shù)說(shuō)明:str為子字符串,pos為初始查找位置。
返回值:找到的話返回第一次出現(xiàn)的位置,否則返回string::npos
2、substr函數(shù)
原型:string substr ( size_t pos = 0, size_t n = npos ) const;
功能:獲得子字符串。
參數(shù)說(shuō)明:pos為起始位置(默認(rèn)為0),n為結(jié)束位置(默認(rèn)為npos)
返回值:子字符串
2、通過(guò)使用strtok()函數(shù)實(shí)現(xiàn)
原型:char strtok(char str, const char *delim);
功能:分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。
描述:strtok()用來(lái)將字符串分割成一個(gè)個(gè)片段。參數(shù)s指向欲分割的字符串,參數(shù)delim則為分割字符串,當(dāng)strtok()在參數(shù)s的字符串中發(fā)現(xiàn)到參數(shù)delim的分割字符時(shí) 則會(huì)將該字符改為0 字符。在第一次調(diào)用時(shí),strtok()必需給予參數(shù)s字符串,往后的調(diào)用則將參數(shù)s設(shè)置成NULL。每次調(diào)用成功則返回被分割出片段的指針。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> split(string a, string b){
vector<string> result;
std::string::size_type i = 0;
std::string::size_type found = a.find(b);
while (found != std::string::npos){
result.push_back(a.substr(i, found - i));
i = found + b.size();
found = a.find(b, i);
}
result.push_back(a.substr(i, a.size() - i));
return result;
}
int main()
{
string a = "aa\nbb\ncc";
vector<string> result = split(a, "\n");
for(int i=0;i<result.size();i++)
cout<<result[i]<<endl;
return 0;
}
自己寫(xiě)個(gè)函數(shù)也不是很復(fù)雜啊,c++是靜態(tài)強(qiáng)類型語(yǔ)言,肯定沒(méi)有python動(dòng)態(tài)弱類型語(yǔ)言方便,但是優(yōu)點(diǎn)還是有的
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。