c++中是否有用于字符串的removeAt函数?

Is there a removeAt function for strings in C++?

本文关键字:removeAt 函数 字符串 用于 是否 c++      更新时间:2023-10-16

我是c++新手。我知道有一种std::remove方法可以从字符串中删除字符,但是是否有一种remove_at方法可以允许我删除字符串中某个索引处的字符?例如

string s = "aBcDeF";
s = s.remove_at(4).remove_at(2);

将导致

"aBDF"

在标准库中有一个函数可以做到这一点吗?

此方法称为erase。下面是一个示范程序

#include <iostream>
#include <string>
int main() 
{
    std::string s = "aBcDeF";
    s.erase( 4, 1 ).erase( 2, 1 );
    std::cout << s << std::endl;
}

程序输出为

aBDF

考虑调用方法的顺序。当然,您可以将这个调用拆分为两个单独的调用。

例如

s.erase( 2, 1 );
s.erase( 3, 1 );

如果你需要创建一个新的字符串,你可以简单地用这个初始化一个新的字符串。例如

std::string t = s;
t.erase( 2, 1 );
t.erase( 3, 1 );

std::string::remove有一个重载,它获得要删除的字符的位置和要从该位置删除的字符的数量。所以你的代码基本上是

s.remove(4,1).remove(2,1);
http://www.cplusplus.com/reference/string/string/erase/

http://www.cplusplus.com/reference/string/string/erase/

第一个重载将执行您想要的操作。string有很多有用的方法,我相信没有多少人能记住所有的方法。一个方便的参考:http://www.cplusplus.com/reference/string/string/