replace
Материал из cppreference.com
Синтаксис:
#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