2015-09-26 31 views
-1

我有一個函數可以從C++字符串中刪除所有出現的子字符串。但我希望它在刪除每個子字符串之前或之後插入空格。如果下面給出我的功能:如何用C++中的空格替換子字符串的所有發生字符串

void removeSubstrs(string& s, string& p) { 
    string::size_type n = p.length(); 
    for (string::size_type i = s.find(p); 
     i != string::npos; 
     i = s.find(p)) 
     s.erase(i, n); 
} 

例如,如果我輸入「AZAZBLACKAZAZBERRYAZ」,我希望輸出「BLACK BERRY」 ......

+0

i/p AZAZBLACKAZA .. o/p BLACK BERRY,AZ在哪裏走了? – udit043

回答

1

,如果你要的是這樣的:

假設 「 - 」 作爲空間
輸入: 「AZAZBLACKAZAZBERRYAZ」 和 「AZ」
輸出: 「--BLACK - BERRY-」

那麼,這可能會幫助您:

void removeSubstrs(string& s, string& p) { 
    string::size_type n = p.length(); 
    for (string::size_type i = s.find(p); i != string::npos; i = s.find(p)) 
    { 
     s.replace(i, n, 1, ' '); 
     //OR 
     //s.erase(i, n); 
     //s.inset(i, ' '); //Add this line 
    } 
} 
+0

你可以做's.replace(i,n,1,'')'而不是'erase/insert'。它甚至可能更有效率。 – Blastfurnace

+0

@Blastfurnace:謝謝,我將其添加到代碼中! – aisa

相關問題