9.43
void replace_with(string &s, string const& oldVal, string const& newVal)
{
for (auto cur = s.begin(); cur <= s.end() - oldVal.size(); )
if (oldVal == string{ cur, cur + oldVal.size() })
cur = s.erase(cur, cur + oldVal.size()),
cur = s.insert(cur, newVal.begin(), newVal.end()),
cur += newVal.size();
else
++cur;
}
9.44
void replace_with(string &s, string const& oldVal, string const& newVal)
{
for (size_t pos = 0; pos <= s.size() - oldVal.size();)
if (s[pos] == oldVal[0] && s.substr(pos, oldVal.size()) == oldVal)
s.replace(pos, oldVal.size(), newVal),
pos += newVal.size();
else
++pos;
}
9.45
auto add_pre_and_suffix(string name, string const& pre, string const& su)
{
name.insert(name.begin(), pre.cbegin(), pre.cend());
return name.append(su);
}
9.46
auto add_pre_and_suffix(std::string name, std::string const& pre, std::string const& su)
{
name.insert(0, pre);
name.insert(name.size(), su);
return name;
}