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

Смежные вопросы