1. 程式人生 > >string替換所有指定字串(C++)

string替換所有指定字串(C++)

C++的string提供了replace方法來實現字串的替換,但是對於將字串中某個字串全部替換這個功能,string並沒有實現,我們今天來做的就是這件事。
首先明白一個概念,即string替換所有字串,將"12212"這個字串的所有"12"都替換成"21",結果是什麼?

可以是22211,也可以是21221,有時候應用的場景不同,就會希望得到不同的結果,所以這兩種答案都做了實現,程式碼如下:

#include   <string>   
#include   <iostream>   
using   namespace   std;   
string&   replace_all(string&   str,const   string&   old_value,const   string&   new_value)   
{   
    while(true)   {   
        string::size_type   pos(0);   
        if(   (pos=str.find(old_value))!=string::npos   )   
            str.replace(pos,old_value.length(),new_value);   
        else   break;   
    }   
    return   str;   
}   
string&   replace_all_distinct(string&   str,const   string&   old_value,const   string&   new_value)   
{   
    for(string::size_type   pos(0);   pos!=string::npos;   pos+=new_value.length())   {   
        if(   (pos=str.find(old_value,pos))!=string::npos   )   
            str.replace(pos,old_value.length(),new_value);   
        else   break;   
    }   
    return   str;   
}   
int   main()   
{   
    cout   <<   replace_all(string("12212"),"12","21")   <<   endl;   
    cout   <<   replace_all_distinct(string("12212"),"12","21")   <<   endl;   
}   
/*
輸出如下:   
22211   
21221
*/


相關推薦

string替換所有指定字串C++

C++的string提供了replace方法來實現字串的替換,但是對於將字串中某個字串全部替換這個功能,string並沒有實現,我們今天來做的就是這件事。首先明白一個概念,即string替換所有字串,將"12212"這個字串的所有"12"都替換成"21",結果是什麼? 可以

string替換所有指定字符串C++

con pos c++ clas 兩種 esp wan replace fin C++的string提供了replace方法來實現字符串的替換,但是對於將字符串中某個字符串全部替換這個功能,string並沒有實現,我們今天來做的就是這件事。首先明白一個概念,即string替

ALGO-70演算法訓練 最長字串 c++

演算法訓練 最長字串   時間限制:1.0s   記憶體限制:512.0MB        求出5個字串中最長的字串。每個字串長度在100以內,且全為小寫字母。 樣例輸入 one two three four fiv

ALGO-71演算法訓練 比較字串 c++

演算法訓練 比較字串   時間限制:1.0s   記憶體限制:512.0MB        程式設計實現兩個字串s1和s2的字典序比較。(保證每一個字串不是另一個的字首,且長度在100以內)。若s1和s2相等,輸出0;若它們

求一個數的所有質因子C++

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 ) 最後一個數後面也要有空格剛開始沒有思路,後來查了下質因子的求法,可通過以下方法求出:#include<iostream>#include<st

在一個字串陣列中找出重複的字串C#

方法一:(hashtable)推薦使用 private bool checkImportDuplicate(string[] str ) { bool flag = false; Hashtable hash = new Hashtabl

LeetCode | Reverse Words in a StringC#

++ style str blog cnblogs count item leetcode string 題目: Given an input string, reverse the string word by word. For example,Given s = "

標準C++中的string類的用法總結

spa 大小 它的 world 包括 文本 語法 ner append() 轉自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用過MFC編程的朋友對CString這個類的印象應該

c++ 容器填充指定長度fill_n

  #include <iostream> // cout #include <algorithm> // fill_n #include <vector> // vector using namespace std; int m

密碼問題函式、字串、指標航電2043題改版c++

【問題描述】 假設一個比較安全的密碼至少應該滿足下面兩個條件: (1)密碼長度大於等於8,且不要超過16。 (2)密碼中的字元應該來自下面“字元類別”中四組中的至少三組。 這四個字元類別分別為: 1.大寫字母:A,B,C…Z; 2.小寫字母:a,b,c…z; 3.數字:0,1,2…9;

LeetCode 678. 有效的括號字串CC++、python

給定一個只包含三種字元的字串:( ,) 和 *,寫一個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則: 任何左括號 ( 必須有相應的右括號 )。 任何右括號 ) 必須有相應的左括號 (&

整數的N進位制字串表示c++

【問題描述】 編寫函式itob(n,s,b),用於把整數n轉換成以b為基的字串並存儲到s中。 編寫程式,使用函式itob(n,s,b)將輸入的整數n,轉換成字串s,將s輸出。 轉換後的字串從最高的非零位開始輸出。 如果n為負數,則輸出的字串的第一個字元為’-’。 b為大於1小於37的任意

LeetCode 459. 重複的子字串C++、python

給定一個非空的字串,判斷它是否可以由它的一個子串重複多次構成。給定的字串只含有小寫英文字母,並且長度不超過10000。 示例 1: 輸入: "abab" 輸出: True 解釋: 可由子字串 "ab" 重複兩次構成。 示例 2: 輸入: "aba" 輸出: False

自定義擴充套件js函式庫---string.replaceAll()---字元替換所有指定字元

/* * 自定義擴充套件js函式庫 * @time:181203 * @add : string.replaceAll()---字元替換所有指定字元 */ /* * string.replaceAll()---字元替換所有指定字元 * @parameter: FindTex

PTA-找最長的字串C語言

本題要求編寫程式,針對輸入的N個字串,輸出其中最長的字串。 輸入格式: 輸入第一行給出正整數N;隨後N行,每行給出一個長度小於80的非空字串,其中不會出現換行符,空格,製表符。 輸出格式: 在一行中用以下格式輸出最長的字串: The longest is: 最長的字串 如果字串的

【劍指Offer】輸入一個正數s,打印出所有和為s 的連續正數序列序列大小至少為2 C++

題目用例: s = 15,那麼由於1+2+3+4+5 = 4+5+6=7+8 = 15,所以存在3個這樣的序列。 分析: 由於序列大小至少為2,我們定義兩個變數l和r,分別表示序列的最小值和最大值。 對於r而言,r取何值其實是有一個範圍的,即當序列只有2

表示數值的字串C++描述

請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3

C字串

#include <stdio.h> #include "../include/c_string.h" #define UNUSED 0 int main() { sizeofAndS

資料結構 - 互換二叉樹中所有結點的左右子樹C++

  #include <iostream> #define NULL 0 using namespace std; template<class T> struct BTNode { T data; BTNode<T> *lChild, *rC

Reverse Words in a String IIIC++

繼續自己刷題之路。。。 Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace