最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 刪除字符串的2種方法小結(jié)

 更新時間:2020年12月11日 08:38:39   作者:wjbooks  
這篇文章主要介紹了C++ 刪除字符串的2種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

C++實現(xiàn)刪除給定字符串的給定字符串思路主要有這么幾種實現(xiàn)方式:

1.KMP算法

2.用STL的string的 find,然后用erase

3.用C的strstr找到字串位置,然后用strncpy寫到新串中

4.用boost庫,用正則表達(dá)式

測試過的完整代碼:

第一種方法:

#include<iostream>
#include <string>
using namespace std; 
void deletestr(const char *str, const char* sub_str, char *result); 
int main()
{ 
 char str[100],sub[100];
 cin>>str;
 cin>>sub;
 char result;
 deletestr(str,sub,&result);
 return 0;
}
 
void deletestr(const char *str, const char* sub_str, char *result)
{ 
 int sublen = 0;  //獲得子串的長度
 const char *t = sub_str;
 while(*t++ != '\0')
 {
 sublen++;
 }
 
 int pos = 0;
 int pp = 0;
 int repos = 0; // 結(jié)果子串的索引
 while(*(str + pos) != '\0')
 {
 char t = *(str + pos);
 if(t == *(sub_str + pp)) // 重復(fù)子串起始位置
 {
  *(result + repos) = t;
  repos++;
 
  if(pp < sublen - 1) // 還未完全重復(fù)
  {
  pp++;
  }
  else if(pp == sublen - 1) // 完全重復(fù)了
  {
  pp = 0;
  repos -= sublen; // 回溯下標(biāo)位置
  }  
 }
 else{ // 不是一樣的字符
  *(result + repos) = t;
  repos++;
 }
 pos++;
 }
 *(result + repos) = '\0';
 cout<<result<<endl;
}

第二種方法,用STL

個人感覺很簡單方便

#include<iostream>
#include <string>
using namespace std;
 
void deletesub(string &str,const string &sub,int n);
int main()
{ 
 string str,sub;
 cin>>str;
 cin>>sub;
 int n=sub.size();
 deletesub(str,sub,n);
 return 0;
}
void deletesub(string &str,const string &sub,int n)
{
 int m,flag=0,num=0;  //num是子串出現(xiàn)的次數(shù)
 while(flag==0)
 {
 m=str.find(sub);
 if(m<0)
  flag=1;
 else
 {
  str.erase(m,n);  //刪除子串
  num++;
 }
 }
// cout<<num<<endl;  //子串出現(xiàn)的次數(shù)
 cout<<str<<endl;  // 輸出刪除后的字符串 
}

補充知識:C++刪除string最后一個字符的幾種方法

我就廢話不多說了,大家還是直接看代碼吧~

#include<iostream>
#include<string>
using namespace std;
int main() 
{
	string str;
	str = "123456";
	cout << str << endl;
 
	//方法一:使用substr()
	str = str.substr(0, str.length() - 1);
	cout << str << endl;
 
	//方法二:使用erase()
	str.erase(str.end() - 1);
	cout << str << endl;
 
	//方法三:使用pop_back()
	str.pop_back();
	cout << str << endl;
	return 0;
}

結(jié)果:

以上這篇C++ 刪除字符串的2種方法小結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文弄懂C語言如何實現(xiàn)單鏈表

    一文弄懂C語言如何實現(xiàn)單鏈表

    單鏈表是由多個結(jié)點鏈接組成,它的每個結(jié)點包含兩個域,一個數(shù)據(jù)域和一個鏈接域(地址域),下面這篇文章主要給大家介紹了關(guān)于C語言如何實現(xiàn)單鏈表的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C語言實現(xiàn)小學(xué)生計算機輔助教學(xué)系統(tǒng)

    C語言實現(xiàn)小學(xué)生計算機輔助教學(xué)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)小學(xué)生計算機輔助教學(xué)系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C語言創(chuàng)建動態(tài)dll和調(diào)用dll(visual studio 2013環(huán)境下)

    C語言創(chuàng)建動態(tài)dll和調(diào)用dll(visual studio 2013環(huán)境下)

    本篇文章主要介紹了C語言創(chuàng)建動態(tài)dll和調(diào)用dll(visual studio 2013環(huán)境下),非常具有實用價值,需要的朋友可以參考下
    2017-11-11
  • C語言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解

    C語言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解

    枚舉顧名思義就是把所有的可能性列舉出來,像一個星期分為七天我們就可以使用枚舉,聯(lián)合體是由關(guān)鍵字union和標(biāo)簽定義的,和枚舉是一樣的定義方式,不一樣的是,一個聯(lián)合體只有一塊內(nèi)存空間,什么意思呢,就相當(dāng)于只開辟最大的變量的內(nèi)存,其他的變量都在那個變量占據(jù)空間
    2021-11-11
  • 淺談C語言中的sizeof()和strlen()的區(qū)別

    淺談C語言中的sizeof()和strlen()的區(qū)別

    本文主要介紹了C語言中的sizeof()和strlen()的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言靜態(tài)動態(tài)兩版本通訊錄實戰(zhàn)源碼

    C語言靜態(tài)動態(tài)兩版本通訊錄實戰(zhàn)源碼

    這篇文章主要為大家?guī)砹薈語言實現(xiàn)靜態(tài)動態(tài)兩版本的通訊錄實戰(zhàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C語言實現(xiàn)雙人五子棋游戲

    C語言實現(xiàn)雙人五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)雙人五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    和音頻存儲類似,視頻的存儲也對應(yīng)三種格式,視頻最原始的數(shù)據(jù)是yuv(音頻對應(yīng)pcm),視頻壓縮后的數(shù)據(jù)是h264(音頻對應(yīng)aac)。本文將利用Qt實現(xiàn)視頻文件保存功能,感興趣的可以了解一下
    2022-12-12
  • C程序結(jié)構(gòu)的入門

    C程序結(jié)構(gòu)的入門

    在我們學(xué)習(xí) C 語言的基本構(gòu)建塊之前,讓我們先來看看一個最小的 C 程序結(jié)構(gòu),在接下來的章節(jié)中可以以此作為參考
    2021-06-06
  • 關(guān)于C++地址交換的實現(xiàn)

    關(guān)于C++地址交換的實現(xiàn)

    在C++中,地址交換通常是指通過指針操作改變兩個變量之間的內(nèi)存地址引用,當(dāng)你有兩個指針分別指向兩個變量時,你可以通過某種機制交換這兩個指針的內(nèi)容,使得它們各自指向?qū)Ψ皆瓉淼奈恢?本介紹了關(guān)于C++地址交換的實現(xiàn),需要的朋友可以參考下
    2024-11-11

最新評論

永泰县| 阳东县| 昌平区| 柞水县| 安达市| 建瓯市| 上栗县| 巴南区| 大兴区| 观塘区| 进贤县| 连江县| 盘锦市| 康保县| 文安县| 西华县| 广宁县| 宝兴县| 德昌县| 胶南市| 和田市| 西城区| 类乌齐县| 工布江达县| 千阳县| 多伦县| 凌源市| 凤山市| 山东| 景宁| 新巴尔虎左旗| 长岭县| 鄂温| 翼城县| 徐闻县| 西盟| 佛冈县| 吉木萨尔县| 钦州市| 都昌县| 葵青区|