在C++中, erase 函数是容器类(如 std::vector 、 std::list 、 std::deque 、 std::string 等)的成员函数,用于移除容器中的元素。具体到 std::string 类型, erase 函数可以以不同的方式使用,来移除字符串中的一个或多个字符。
加:erase不能识别空格
erase 函数的参数可以是一个位置索引,也可以是一对迭代器,指向要移除的字符范围。
当只有一个参数时,它移除单个字符:
例:
std::string str = "Hello,World!";
str.erase(5); // 移除索引为5的字符,即第6个逗号
变为HelloWorld
当有两个参数时,第一个参数是起始位置,第二个参数是要移除从指定位置开始的一定数量的字符:
例:
std::string str = "Hello,World!";
str.erase(5, 5); // 从索引为5的位置(第六个逗号)开始移除5个字符
// str 变为 "Hello, !"
注:在C++中,字符串的索引是从0开始的,所以这个参数表示从字符串的第6个字符开始移除。
如果尝试移除的位置或数量超出了字符串的实际范围, erase 函数将抛出 std::out_of_range 异常,除非使用的是 C++11 或更新的标准,此时函数将不会抛出异常,而是会默默地忽略超出范围的请求。