C ++中的字符串是否有removeAt函数?

时间:2015-07-19 15:42:07

标签: c++ string

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

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

会导致

"aBDF"

标准库中是否有函数可以执行此操作?

3 个答案:

答案 0 :(得分:6)

此方法称为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 );

答案 1 :(得分:3)

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

s.remove(4,1).remove(2,1);

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

答案 2 :(得分:2)

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

第一次重载会做你想要的。 std :: string有很多有用的方法,我相信没有太多人能记住它们。一个方便的参考:http://www.cplusplus.com/reference/string/string/