Для того, чтобы иметь новую строку, возвращаемые использовать это:
std::string ReplaceString(std::string subject, const std::string& search,
const std::string& replace) {
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
return subject;
}
Если вам нужна производительность, здесь является оптимизированной функцией, которая изменяет входную строку, он не создает копию строки:
void ReplaceStringInPlace(std::string& subject, const std::string& search,
const std::string& replace) {
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
}
тесты :
std::string input = "abc abc def";
std::cout << "Input string: " << input << std::endl;
std::cout << "ReplaceString() return value: "
<< ReplaceString(input, "bc", "!!") << std::endl;
std::cout << "ReplaceString() input string not modified: "
<< input << std::endl;
ReplaceStringInPlace(input, "bc", "??");
std::cout << "ReplaceStringInPlace() input string modified: "
<< input << std::endl;
Выход:
Input string: abc abc def
ReplaceString() return value: a!! a!! def
ReplaceString() input string not modified: abc abc def
ReplaceStringInPlace() input string modified: a?? a?? def
возможно дубликат [Что такое функция для замены строки в C?] (Http://stackoverflow.com/questions/779875/what-is-the-function-to-replace-string-in- c) - oops жаль, что это C, а не C++; Жаль, что я не смогу это сделать. – polygenelubricants
Почему у этого есть тег 'C'? – sbi
@poly Я бы подумал, что этого, должно быть, тоже попросили C++, но я не могу его найти –