从字符串中删除前N个字符

31

我想在C ++中删除字符串的前10个字符。我该如何做?

3个回答

49

像这样:

str.erase(0,10);

...


啊,是的,那个方法可行。我之前尝试了str.erase(str.begin(), str.end()+10);,结果也导致了崩溃。谢谢! - timonsku
4
str.begin() 表示字符串 str 的起始位置,str.begin() + 10 表示字符串 str 中从起始位置开始的前十个字符的位置。 - user3458
1
在处理大字符串时,比起使用str=str.substr(10),8:11的方法更快。 - P Marecki

9

谢谢,这个也可以正常工作,但第二个代码稍微短一些。 - timonsku
1
@Paul,使用这种方式确实在编写时更短,但我必须说,在你的情况下,str.erase(size_t,size_t)具有更好的性能。 - PiotrNycz
很好知道,我的整个应用程序非常耗时。 - timonsku
我的意思是迈克尔的版本在性能方面更好。选择他的。(说实话很难 :-() - PiotrNycz

1
我怀疑你没有展示所有的代码,问题可能就出在那里。
这段代码运行得很好:
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    string imgURL = "<img src=\"http://imgs.xkcd.com/comics/sky.png";

    string str = imgURL;
    int urlLength = imgURL.length();
    urlLength = urlLength-10;
    str.erase (str.begin(), str.end()-urlLength);
    imgURL = str;

    cout << imgURL << endl;

    return 0;
}

话虽如此,正如其他人所提到的那样,这个问题还有更简短的解决方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接