2012-10-02 184 views

回答

24

像这样:

str.erase(0,10); 

...

+0

呃是的,这是有效的。我试过str.erase(str.begin(),str.end()+ 10); 这让我在<。< 之前崩溃谢谢! – PTS

+3

str.begin(),str.begin()+ 10 – Arkadiy

+0

对于大型字符串,比str = str.substr(10)快8:11。 –

4

使用std::string::substr

try { 
    str = str.substr(10); 
} catch (std::out_of_range&) { 
    //oops str is too short!!! 
} 
  1. http://www.cplusplus.com/reference/string/string/substr/
+0

感谢这一个工程,没有崩溃,但第二个是短一点。 – PTS

+1

@Paul编写它确实更短 - 但我必须说str.erase(size_t,size_t)在你的情况下有更好的性能。 – PiotrNycz

+0

很高兴知道,我的整个应用程序非常耗时。 – PTS

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; 
} 

随着中说,有更短的方法可以做到这一点,因为其他人提及。

相关问题