C++中字符串的查找與插入方式
一、字符串查找
在一個(gè)長字符串中找到需要從子串,可以用暴力匹配,從長串中第一個(gè)字符開始,一個(gè)個(gè)和字串對(duì)比,能完全對(duì)上就是找到了,對(duì)不上就循環(huán)加一。
1、用函數(shù)加循環(huán)查找
int findsub(const string &s,const string &sub){
int n=s.size(),m=sub.size();
if(m>n)
return -1;
for(int i=0;i<=n-m;i++){
int j=0;
while(j<m&&s[i+j]==sub[j]){
j++;
}
if(j==m){
return i;
}
}
} 2、用string中自帶的find()
#include<bits/stdc++.h>
using namespace std;
int main(){
string s,sub;//s是主串,sub是要查找的子串
cin>>s>>sub;
size_t pos=s.find(sub);//調(diào)用string中自帶的find(),會(huì)查找出子串第一次出現(xiàn)的位置,返回值類型是size_t(無符號(hào)整數(shù),專門用來存下標(biāo)或長度)
if(pos!=string::npos){//string::npos是定義的常量,表示沒找到
cout<<pos<<endl;//找到輸出下標(biāo)
}
else{
cout<<-1<<endl;//沒找到輸出-1
}
return 0;
}可以用getlin(cin,s)整行讀取字符串包括空格
二、字符串插入
在指定位置加內(nèi)容,把原字符串在指定位置拆成兩個(gè)部分,前部分加上插入內(nèi)容再加上后半部分。
1、用substr把字符串截取字串,拼接起來
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;//原字符串
string ins;//要插入的字符串
int pos=2;//在下標(biāo)為二的位置上插入新的字符
cin>>s>>ins;
string res=s.substr(0,pos)+ins+s.substr(pos);//substr從字符串中截取子串,s.substr(起始位置,截取長度),s.substr(起始位置),不寫長度默認(rèn)到最后
cout<<res;
return 0;
}2、用for循環(huán),逐個(gè)字符拼接
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;//原字符串
string ins;//要插入的字符串
int pos=2;//在下標(biāo)為二的位置上插入新的字符
cin>>s>>ins;
string str;
for(int i=0;i<pos;i++){
str=str+s[i];
}//原字符前半部分:0~pos-1
for(int i=0;i<ins.size();i++){
str=str+ins[i];
}//插入的內(nèi)容
for(int i=pos;i<s.size();i++){
str=str+s[i];
}//原字符串后半部分:pos~結(jié)束
cout<<str;
return 0;
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
c語言統(tǒng)計(jì)素?cái)?shù)之和的實(shí)例
這篇文章主要介紹了c語言統(tǒng)計(jì)素?cái)?shù)之和的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
基于C++實(shí)現(xiàn)去除字符串頭尾指定字符功能
編程時(shí)我們經(jīng)常需要對(duì)字符串進(jìn)行操作,其中有一項(xiàng)操作就是去除字符串的頭(尾)指定的字符,比如空格。本文為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)這一效果,需要的可以參考一下2022-04-04
C語言全面細(xì)致講解單雙精度float與double的使用方法
C語言中小數(shù)的數(shù)據(jù)類型為 float 或 double:float 稱為單精度浮點(diǎn)數(shù),double 稱為雙精度浮點(diǎn)數(shù)。不像整數(shù),小數(shù)的長度始終是固定的,float 占用4個(gè)字節(jié),double 占用8個(gè)字節(jié)2022-05-05
Opencv實(shí)現(xiàn)視頻播放與進(jìn)度控制
這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)視頻播放與進(jìn)度控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語言實(shí)現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03
QT實(shí)現(xiàn)自定義Http客戶端的示例代碼
這篇文章主要為大家詳細(xì)介紹了QT如何實(shí)現(xiàn)自定義Http客戶端的,可以實(shí)現(xiàn)支持get,post請(qǐng)求方式;支持連接超時(shí)處理;支持網(wǎng)絡(luò)錯(cuò)誤,嘗試重連等功能,感興趣的小伙伴可以學(xué)習(xí)一下2022-11-11

