Ce face std::replace
std::replace parcurge intervalul și înlocuiește fiecare apariție a lui vechi cu nou. std::replace_if înlocuiește elementele pentru care funcția returnează true.
Pe std::string, std::replace lucrează cu caractere individuale. Pentru a înlocui un cuvânt întreg ai nevoie de string::find și string::replace.
Parametri
| Parametru | Descriere |
|---|---|
first, last |
Intervalul. |
vechi |
Valoarea înlocuită (pentru replace). |
conditie |
Funcția de test (pentru replace_if). |
nou |
Valoarea nouă. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Caractere într-un text
#include <algorithm>
#include <print>
#include <string>
int main() {
std::string data = "2026-10-19";
std::replace(data.begin(), data.end(), '-', '.');
std::println("{}", data);
}
Rezultat
2026.10.19
Exemplul 2: Plafonarea valorilor negative
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<int> sold{120, -30, 45, -5, 0};
std::replace_if(sold.begin(), sold.end(), [](int s) { return s < 0; }, 0);
std::println("{}", sold);
std::ranges::replace(sold, 0, -1);
std::println("{}", sold);
}
Rezultat
[120, 0, 45, 0, 0]
[120, -1, 45, -1, -1]
Greșeli frecvente
- Încerci
std::replace(s.begin(), s.end(), "vechi", "nou")pe un text: nu compilează, pentru că elementele sunt caractere, nu cuvinte.
Comenzi înrudite
std::remove: Mută la final elementele egale cu o valoare și returnează noul sfârșit; ștergerea reală se face cu erase.std::transform: Aplică o funcție fiecărui element și scrie rezultatele în alt interval (sau în același).std::fill: Atribuie aceeași valoare tuturor elementelor unui interval (fill) sau primelor n elemente (fill_n).