C++:string字符串的切片方式
C++:string字符串的切片
string字符串在C++中不能直接進(jìn)行切片操作,需要借助函數(shù)find和substr進(jìn)行
1.substr用于進(jìn)行已知序號(hào)的切片操作
substr語(yǔ)法為 :
string對(duì)象.substr(起點(diǎn) , 切片長(zhǎng)度)
operate_str = initial_str.substr(0, 3);
代碼演示如下
?? ?//使用substr函數(shù)實(shí)現(xiàn)已知序號(hào)的字符串切片 ?? ?string initial_str = "0123456789"; ?? ?string operate_str; ?? ?operate_str = initial_str.substr(0, 3); //從0號(hào)開始,切片長(zhǎng)度為3,即截取0到(0 + 3 - 1)號(hào) ?? ?cout << "operate_str = " << operate_str << endl; //輸出結(jié)果為012
2.find函數(shù)和substr函數(shù)
配合用于進(jìn)行已知特征字符串的字符串切片
find函數(shù)處理對(duì)象中存在特征字符串時(shí)返回特征串第一個(gè)字符的序號(hào),若對(duì)象中不存在特征字符串則返回-1
find函數(shù)語(yǔ)法為:
string對(duì)象.find(特征字符串)
int start = initial_str.find(key1);?
以下配合substr實(shí)現(xiàn)已知特征字符串的字符串切片
?? ?//使用substr函數(shù)配合find函數(shù)實(shí)現(xiàn)已知特征串的字符串切片 ?? ?string key1 = "23"; //定義特征串 ?? ?int len = 5; //定義切片長(zhǎng)度 ?? ?int start = initial_str.find(key1); //返回特征串第一個(gè)字符的序號(hào),此處為2 ?? ?string key2 = "abc"; //測(cè)試不存在特征串返回值 ?? ?int result = initial_str.find(key2); ?? ?cout << "result = " << result << endl; //對(duì)象中不存在特征串,此處輸出為 -1 ?? ?operate_str = initial_str.substr(start, len); //從start開始,切片長(zhǎng)度為len,即截取start到(start + len - 1)號(hào) ?? ?cout << "operate_str = " << operate_str << endl; //輸出結(jié)果為23456
(變量與只使用substr時(shí)相同)
C++特定分隔符將字符串進(jìn)行分割
使用特定分隔符’\n’將字符串進(jìn)行分割,如傳參數(shù)“2023\n01\n13”,則輸出結(jié)果為
2023
01
13
void SplitString(std::string str){ if(str.empty()){ return; } vector<std::string> res; const char split = '\n'; //分割符 std::string strs = str + split; size_t i = 0; size_t pos = strs.find(split,i); while(pos ! = strs.npos){ string temp = strs.substr(i, pos - i); res.push_back(temp); i = pos + 1; pos = strs.find(split,i) } for(int i=0;i<res.size();i++){ cout>>res.[i]>>endl; } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言中不定參數(shù)?...?的語(yǔ)法以及函數(shù)封裝
不定參數(shù)是指函數(shù)可以接收不確定個(gè)數(shù)的參數(shù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中不定參數(shù)?...?的語(yǔ)法以及函數(shù)封裝的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01使用Cline+deepseek實(shí)現(xiàn)VsCode自動(dòng)化編程
Cline是一個(gè)免費(fèi)且強(qiáng)大的VSCode插件,可以接入多種大模型API進(jìn)行對(duì)話式編程,本文主要介紹了使用Cline+deepseek實(shí)現(xiàn)VsCode自動(dòng)化編程,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01vs2022項(xiàng)目文件夾內(nèi).vs文件夾容量虛高問(wèn)題的解決
經(jīng)常會(huì)發(fā)現(xiàn)VS的項(xiàng)目文件夾占用空間很大,本文主要介紹了vs2022項(xiàng)目文件夾內(nèi).vs文件夾容量虛高問(wèn)題的解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法
這篇文章主要介紹了C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法,分別是strchr()函數(shù)和strrchr()函數(shù)的使用,需要的朋友可以參考下2015-08-08C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有圖形界面鐘表
這篇文章主要介紹了C語(yǔ)言基于EasyX庫(kù)實(shí)現(xiàn)有圖形界面鐘表,直線轉(zhuǎn)動(dòng)端點(diǎn)計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解
這篇文章主要給大家介紹了關(guān)于利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
本文介紹了一個(gè)在C++中保存不定長(zhǎng)二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個(gè)結(jié)構(gòu)中,我們使用了一個(gè)含有指針和數(shù)組長(zhǎng)度的結(jié)構(gòu)體,用這樣的一個(gè)結(jié)構(gòu)體構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)每一個(gè)不定長(zhǎng)的數(shù)組,感興趣的朋友一起看看吧2024-03-03