Para que la nueva cadena devuelta uso esto:
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;
}
Si necesita el rendimiento, aquí es una función optimizada que modifica la cadena de entrada, no crear una copia de la cadena:
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();
}
}
pruebas :
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;
salida:
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
posible duplicado de [¿Cuál es la función de reemplazar cadena en C?] (Http://stackoverflow.com/questions/779875/what-is-the-function-to-replace-string-in- c) - ¡Vaya, lo siento, es C, no C++; Desearía poder dejar de votar. – polygenelubricants
¿Por qué esto tiene una etiqueta 'C'? – sbi
@poly Creo que esto también debe haber sido preguntado por C++, pero no puedo encontrarlo –