2015-09-26 32 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

相关问题