我是C ++的新手。我知道有一个std::remove
方法可以从字符串中删除字符,但是有某种remove_at
方法允许我删除字符串中某个索引处的字符吗?例如,
string s = "aBcDeF";
s = s.remove_at(4).remove_at(2);
会导致
"aBDF"
标准库中是否有函数可以执行此操作?
答案 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);
答案 2 :(得分:2)
http://www.cplusplus.com/reference/string/string/erase/
第一次重载会做你想要的。 std :: string有很多有用的方法,我相信没有太多人能记住它们。一个方便的参考:http://www.cplusplus.com/reference/string/string/