std::basic_string::replace

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str );
(1)
basic_string& replace( const_iterator first, const_iterator last,
                       const basic_string& str );
(1)
(2)
basic_string& replace( size_type pos, size_type count,

                       const basic_string& str,

                       size_type pos2, size_type count2 );
(C++14 前)
basic_string& replace( size_type pos, size_type count,

                       const basic_string& str,

                       size_type pos2, size_type count2 = npos );
(C++14 起)
template< class InputIt >

basic_string& replace( const_iterator first, const_iterator last,

                       InputIt first2, InputIt last2 );
(3)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr, size_type count2 );
(4)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr, size_type count2 );
(4)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr );
(5)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr );
(5)
basic_string& replace( size_type pos, size_type count,
                       size_type count2, CharT ch );
(6)
basic_string& replace( const_iterator first, const_iterator last,
                       size_type count2, CharT ch );
(6)
basic_string& replace( const_iterator first, const_iterator last,
                       std::initializer_list<CharT> ilist );
(7) (C++11 起)
basic_string& replace( size_type pos, size_type count,
                       std::basic_string_view<CharT, Traits> sv );
(8) (C++17 起)
basic_string& replace( const_iterator first, const_iterator last,
                       std::basic_string_view<CharT, Traits> sv );
(9) (C++17 起)
template < class T >

basic_string& replace( size_type pos, size_type count, const T& t,

                       size_type pos2, size_type count2 = npos );
(10) (C++17 起)

以新字符串替换 [pos, pos + count)[first, last) 所指示的 string 部分。

新字符串可以是下列之一:

1) string str
2) str 的子串 [pos2, pos2 + count2) ,除了若 count2==npos 或若它可能越过 str.size() ,则使用 [pos2, str.size())
3) 范围 [first2, last2) 中的字符。若 InputIt 为整数类型则此重载与 (6) 拥有相同效果。
4) cstr 所指向的字符串的首 count2 个字节;
5) cstr 所指向的空终止字符串;
6) 字符 chcount2 个副本;
7) initializer_list ilist 中的字符;
8) 字符串视图 sv 中的字符(等价于 replace(pos, count, sv.data(), sv.size()) );
9) 字符串视图 sv 中的字符(等价于 replace(first - begin(), last - first, sv) );
10) 如同用 std::basic_string_view<CharT, Traits> sv = t;t 转换而得的字符串视图 sv 的子视图 [pos2, pos2 + count2) ,除了若 count2==npos 或它将越过 sv.size() ,则使用 [pos2, sv.size()) 。此重载仅若 std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>>truestd::is_convertible_v<const T&, const CharT*>false 才参与重载决议。

目录

[编辑] 参数

pos - 将被替换的子串起始位置
count - 将被替换的子串长度
first, last - 将被替换的字符范围
str - 用于替换的 string
pos2 - 用于替换的子串起始位置
count2 - 用于替换的字符数
cstr - 指向用于替换的字符串的指针
ch - 用于替换的字符值
first2, last2 - 用于替换的字符范围
ilist - 拥有用于替换的字符的 initializer_list
sv - 拥有用于替换的字符的 std::basic_string_view
t - 拥有用于替换的字符的对象(可转换为 std::basic_string_view

[编辑] 返回值

*this

[编辑] 异常

pos > length()pos2 > str.length() 则为 std::out_of_range

若产生的 string 将超出最大可能 string 长度( std::string::npos - 1 )则为 std::length_error

任何情况下,若因任何原因抛出异常,则此函数无效果(强异常保证)。 (C++11 起)

[编辑] 示例

#include <iostream>
#include <string>
 
int main()
{
    std::string str("The quick brown fox jumps over the lazy dog.");
 
    str.replace(10, 5, "red"); // (5)
 
    str.replace(str.begin(), str.begin() + 3, 1, 'A'); // (6)
 
    std::cout << str << '\n';
}

输出:

A quick red fox jumps over the lazy dog.