Перевод этой страницы?:

replace

Синтаксис:

    #include <string>
    string& replace( size_type index, size_type num, const string& str );
    string& replace( size_type index1, size_type num1, const string& str, size_type index2, size_type num2 );
    string& replace( size_type index, size_type num, const charT* str );
    string& replace( size_type index, size_type num1, const charT* str, size_type num2 );
    string& replace( size_type index, size_type num1, size_type num2, charT ch);
 
    string& replace( iterator start, iterator end, const string& str );
    string& replace( iterator start, iterator end, const charT* str );
    string& replace( iterator start, iterator end, const charT* str, size_type num );
    string& replace( iterator start, iterator end, size_type num, charT ch );
    string& replace( iterator start, iterator end, input_iterator start2, input_iterator end2 );

Метод replace выполняет следующие действия:

  • заменяет num символов текущей строки символами из строки str, начиная с индекса index,
  • заменяет num1 символов текущей строки (начиная с индекса index1) символами строки str в количестве num2, начиная с индекса index2,
  • заменяет num символов текущей строки символами из строки str, начиная с индекса index строки str (в отличие от первого варианта перегрузки, в данном случае строка передается как указатель на массив символов),
  • заменяет num1 символов текущей строки (начиная с индекса index1) символами строки str в количестве num2, начиная с индекса index2 (строка передается как указатель на массив символов),
  • заменяет num1 символов текущей строки (начиная с индекса index) символами ch в количестве num2,
  • заменяет символы в текущей строки начиная со start до end символами из строки str в количестве num,
  • заменяет символы текущей строки начиная со start до end символами ch в количестве num.

Например, следующий код выводит строку «They say he carved it himself…find your soul-mate, Homer.» :

     string s = "They say he carved it himself...from a BIGGER spoon";
     string s2 = "find your soul-mate, Homer.";
     s.replace( 32, s.length() - 32, s2 );
     cout << s << endl;

Замена всех вхождений

Метод replace может так же использоваться для замены всех вхождений одной строки в другую.

Например:

string& replaceAll(string& context, const string& from, const string& to)
{
    size_t lookHere = 0;
    size_t foundHere;
    while((foundHere = context.find(from, lookHere)) != string::npos)
    {
          context.replace(foundHere, from.size(), to);
          lookHere = foundHere + to.size();
    }
    return context;
}

Смотрите также: insert